暂停进程以留出时间让调试器附加

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,然后享受剩下的调试过程;-)

【讨论】:

我不明白它是如何工作的以及应该在哪里使用这段代码! 这实际上是一个非常好的主意。谢谢!!

以上是关于暂停进程以留出时间让调试器附加的主要内容,如果未能解决你的问题,请参考以下文章

如何暂停powershell脚本,直到调试器附加

调试CEF3程序的方法

远程调试,附加到尚未启动的进程

C#:以干净的方式将调试器附加到进程

Visual Studio - 以编程方式将调试器附加到远程进程

启动时暂停 Windows 10 应用商店应用