【发布时间】:2017-02-03 03:27:30
【问题描述】:
我想做的是fork一个进程,在子进程中执行一个新的可执行文件,让父进程终止并通过GDB附加到子进程来调试这个子进程。我使用初始父进程来分叉子(可调试)进程的原因是我想为这个子进程设置一些环境属性,这需要对 linux 内核进行一些系统调用,并且不想修改 GDB 这样做.我尝试发现在父进程终止后我可以通过 GDB 附加到子进程,但在这种情况下,子进程在 exec() 系统调用之后已经在运行。 问题是我不能对孩子使用 ptrace(PTRACE_TRACEME),这会导致它在第一条指令处停止,因为在这种情况下,GDB 无法附加到它,因为它已经被它的父级跟踪。 如何在设置环境后停止子进程,以便在执行 exec() 时在第一条指令处停止?
【问题讨论】: