ptrace:STEPINTO返回断点信号

时间:2013-11-18 11:12:07

标签: linux debugging breakpoints ptrace

又一个问题:

初始SIGTRAP暂停进程,然后用STEPINTO调用ptrace来执行下一条指令。在ptrace调用之后,我调用waitpid(...)并且确实它确实收到了SIGTRAP信号!太好了!

然而,当我通过调用

检查siginfo_t结构时
 ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)

字段如下:

 si_signo = SIGTRAP
 si_code = 1

但是,1是断点的信号代码。在这种情况下没有遇到断点:

/* `si_code' values for SIGTRAP signal.  */
enum
{
  TRAP_BRKPT = 1,       /* Process breakpoint.  */
# define TRAP_BRKPT TRAP_BRKPT
  TRAP_TRACE            /* Process trace trap.  */
# define TRAP_TRACE TRAP_TRACE
};

发生了什么事?

所有涉及的调用都返回成功(0),而errno也是0。

编辑:那么当我点击一个真正的0xCC断点时会发生什么? 触发SIGTRAP并且si_code字段为0x80! 0x80甚至没有为SIGTRAP定义! :(

0 个答案:

没有答案