暂停进程以留出时间让调试器附加
Posted
技术标签:
【中文标题】暂停进程以留出时间让调试器附加【英文标题】:Pause process to allow time for debugger to attach 【发布时间】:2017-04-23 21:48:05 【问题描述】:我想将 gdb 附加到一个我无法轻松控制进程启动的进程,因为它是从 inetd 运行的,并且该进程完成得太快以至于一旦启动就无法附加到它。
我想做的是在我想开始调试的特定点插入一些代码。理想情况下,该代码将等待调试器附加然后继续。我已经尝试过睡眠,但是要选择足够长的延迟以让我有时间赶上它,但又要足够短,以免在附加 gdb 后等待它过去,这很棘手。
是否有更好的代码选择来插入或调用用于此目的?
【问题讨论】:
你也可以set follow-fork-mode child
调试新的子进程。
【参考方案1】:
我想做的是在我想开始调试的特定点插入一些代码。
我通常这样做:
volatile int done = 0;
while (!done) sleep(1);
附加 GDB(您将在 sleep
中)。执行finish
,然后执行set var done = 1
,然后享受剩下的调试过程;-)
【讨论】:
我不明白它是如何工作的以及应该在哪里使用这段代码! 这实际上是一个非常好的主意。谢谢!!以上是关于暂停进程以留出时间让调试器附加的主要内容,如果未能解决你的问题,请参考以下文章