我有一个类似于有什么方法可以告诉GDB等待进程启动并附加到它吗?,但它是相反的——我想让gdb附加到一个已经运行的进程进程,但让进程暂停,直到 gdb 完成附加。
更具体地说,进程本身会分叉,子进程会执行
gdb $program -p $parentpid -ex 'c'
或类似的东西。父级将等待 gdb 连接后再继续。我想避免在继续之前简单地等待任意时间,因为我想避免对 gdb 启动需要多长时间进行任何假设。
我不确定这是否可行,但如果可行的话将会非常有用。
父进程将等待 gdb 连接后再继续。
假设您使用的是 Linux,父级可以重复读取
/proc/self/status
,等待 TracerPid
变为非零。
但是,这有点毫无意义:当 GDB 附加您的进程时,GDB 将停止它(即,在 GDB 附加
并继续您附加的进程之前,该进程永远不会真正看到
TracerPid != 0
。
所以这个答案中的解决方案也同样有效(尽管它确实需要GDB做的不仅仅是
continue
你的过程)。