2011-10-09 42 views
2

試圖在C中構建一個用於模糊測試的調試器。構建一個Linux調試器C

基本上在Linux中,我只是想通過fork然後execve()啓動一個進程,然後監視這個進程,看看它是否在1秒後崩潰。

在linux上,這是通過創建過程來完成的,然後監視它爲看起來像是崩潰的任何事情生成的信號?還是關於監控應用程序?我不確定。

回答

6

使用ptrace(2)系統調用:

被跟蹤時,孩子會在每次的信號 停止投放,即使信號被忽略。 (例外情況是 SIGKILL,具有其通常的效果。)父母將通過 通知其下一個等待(2),並且可以檢查並修改子進程,但其 已停止。父母然後導致孩子繼續,可選地,忽略遞送的信號(或者甚至遞送不同的信號 代替)。

的信號,你應該會感興趣,就於已經墜毀是SIGSEGV(限制存儲器存取),SIGBUS(未對齊的數據訪問),SIGILL(非法指令),SIGFPE(非法浮點運算)的過程中,等等。