构建Linux调试器C.

时间:2011-10-09 09:11:43

标签: c linux debugging

尝试在C中构建调试器以进行模糊测试。

基本上在linux中,我只想通过fork然后执行execve()来启动进程,然后监视此进程以查看它是否在1秒后崩溃。

在linux上,这是通过创建进程然后监视它为看起来像崩溃的任何东西生成的SIGNAL来完成的吗?或者它是关于监控应用程序和?我不确定。

1 个答案:

答案 0 :(得分:6)

使用ptrace(2)系统调用:

  

在被追踪时,孩子每次信号都会停止   即使信号被忽略,也会传递。 (例外是   SIGKILL,它具有通常的效果。)将通知父母   它的下一个等待(2)并可以检查和修改子进程   停了然后,父母可以选择让孩子继续   忽略传递的信号(甚至传递不同的信号   代替)。

对于崩溃的进程,您应该感兴趣的信号是SIGSEGV(受限内存访问),SIGBUS(未对齐数据访问),SIGILL(非法指令), SIGFPE(非法浮点运算)等。