如何调试 ptrace tracee?

How can I debug a ptrace tracee?

我正在编写一个涉及使用 ptrace 控制 tracee 进程的程序。当然,有错误 :) 为了修复我的错误,我希望能够使用 gdb 检查被跟踪者的状态。但是,gdb -p 表示:

warning: process X is already traced by process Y

如果我只使用 PTRACE_DETACH,那么 tracee 将继续执行直到我启动 gdb,这可能会破坏我正在尝试检查的状态。

非常感谢任何有关如何检查 ptrace tracee 的运行时状态的建议(可能使用 gdb 以外的工具)。

Any suggestion for how to examine the runtime state of a ptrace tracee

一种方法是让跟踪器实现 GDB remote debugging protocol. Additional documentation here

另外 展示了如何在不恢复进程的情况下分离进程。