如何正确还原PTRACE_TRACEME

时间:2017-04-25 11:18:08

标签: gdb ptrace

通常使用ptrace(PTRACE_TRACEME, 0, 0, 0)来阻止程序被调试,

但是一旦应用PTRACE_TRACEME,程序将无法正常退出,而是接收SIGSTOP信号,

那么如何让程序正常退出呢? exit(0)无法在此处使用

1 个答案:

答案 0 :(得分:0)

来自http://man7.org/linux/man-pages/man2/ptrace.2.html

PTRACE_TRACEME
          Indicate that this process is to be traced by its parent.  A
          process probably shouldn't make this request if its parent
          isn't expecting to trace it.
  

通常使用ptrace(PTRACE_TRACEME, 0, 0, 0)来阻止程序被调试,

任何此类"普通"使用已损坏,除非父进程即将跟踪此进程。

你已经承诺(对内核)"我即将开始追踪这个过程"。内核尽职尽责等待你实现这一承诺。

  

那么如何让程序正常退出呢?

让父母跟踪它(带有所有暗示)。