Gdb 使用ptrace时阻止信号传播到下级
我放了一个简单的trap指令来模拟下位机上的断点,但是当到达这个指令时,我杀死了一个CLD_而不是CLD_SIGTRAP,如下所示 ---SIGCHLD{si_signo=SIGCHLD,si_code=CLD_KILLED,si_pid=12668,si_uid=10157,si_status=SIGTRAP,si_utime=2692,si_stime=875} gdb似乎能够通过使用命令“handle SIGSTOP nopass”来阻止SIGTRAP杀死下级 我怎样用C语言来做呢 谢谢根据手册, 在您的情况下,Gdb 使用ptrace时阻止信号传播到下级,gdb,trace,ptrace,Gdb,Trace,Ptrace,我放了一个简单的trap指令来模拟下位机上的断点,但是当到达这个指令时,我杀死了一个CLD_而不是CLD_SIGTRAP,如下所示 ---SIGCHLD{si_signo=SIGCHLD,si_code=CLD_KILLED,si_pid=12668,si_uid=10157,si_status=SIGTRAP,si_utime=2692,si_stime=875} gdb似乎能够通过使用命令“handle SIGSTOP nopass”来阻止SIGTRAP杀死下级 我怎样用C语言来做呢 谢谢根
si_code=CLD_KILLED
,因此子句si_status
[…]等于导致子项更改状态的信号
因此,si_status=SIGTRAP
就是您要查找的信息
如果你有
ptrace
你的孩子,你会得到一个SIGTRAP
。我后来发现我必须连接到我正在调试的进程的线程,这就是为什么si_code=CLD_被杀死的原因。我只是在连接主进程。
SIGCHLD
si_pid child process ID
si_status exit value or signal; if si_code is equal to
CLD_EXITED, then it is equal to the exit
value of the child process, otherwise, it is
equal to a signal that caused the child
process to change state.