Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gdb 使用ptrace时阻止信号传播到下级_Gdb_Trace_Ptrace - Fatal编程技术网

Gdb 使用ptrace时阻止信号传播到下级

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语言来做呢 谢谢根

我放了一个简单的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.