有一個用戶進程1可以'執行'第二個進程2。如果我不知道什麼時候可以創建,我可以跟蹤第二個過程-2。在不知道pid的情況下,我不能在dtrace腳本中同時使用'-p'和'-c'選項,也不想手動執行該過程。dtrace將在未來運行的用戶進程
使用PID提供程序我得到一個名稱空間錯誤(函數不屬於進程1)。我想「:: functio_name:進入/ execname == 「過程-2」/ {},但這並不對任何指針編譯用戶空間程序
感謝
有一個用戶進程1可以'執行'第二個進程2。如果我不知道什麼時候可以創建,我可以跟蹤第二個過程-2。在不知道pid的情況下,我不能在dtrace腳本中同時使用'-p'和'-c'選項,也不想手動執行該過程。dtrace將在未來運行的用戶進程
使用PID提供程序我得到一個名稱空間錯誤(函數不屬於進程1)。我想「:: functio_name:進入/ execname == 「過程-2」/ {},但這並不對任何指針編譯用戶空間程序
感謝
我認爲這post可以幫助。你需要2
的DTrace腳本:
(1)第一個腳本時使用process-2
開始跟蹤一旦它開始運行,啓動另一個腳本跟蹤process-2
:
# cat followfork.d
proc:::start
/ppid == $target/
{
stop();
printf("fork %d\\n", pid);
system("dtrace -qs child.d -p %d", pid);
}
(2 ) 第二腳本跟蹤聚焦功能:
# cat child.d
pid$target::function_name:entry
{
......
}
您也可以參考上DTrace
郵件列表相關的討論:
How to trace libc module of both parent andchild processes?
When a process is stopped by stop() action, when and how does the process is restarted?
順便說一句,你還可以參考謝爾蓋Klyaus的Dynamic Tracing with DTrace & SystemTap檢查哪些探測應用於過程創建: