将lldb / gdb附加到一个短暂的进程?

时间:2014-12-21 08:40:43

标签: gdb lldb

我正在调试一个短命的程序。也就是说,它不会停止并等待lldb / gdb调试器附加。那么如何将lldb调试器附加到这种过程中呢?

2 个答案:

答案 0 :(得分:0)

  

那么如何将lldb调试器附加到这种过程中呢?

将调试器附加到父进程和set follow-fork-mode child。根据文档,“在fork之后调试新进程。父进程运行不受阻碍”。请参阅GDB手册中的4.11 Debugging Forks

答案 1 :(得分:0)

传统方法是使用睡眠循环,或者如果您有权访问源,则可以使用像

这样的繁忙循环。
int wait_for_debugger = 1
while (wait_for_debugger)
    ;

然后您附加到流程并将wait_for_debugger设置为0(例如p wait_for_debugger = 0)并继续此过程。

lldb有一个--waitfor选项可以附加到进程。这有lldb重复轮询进程表,寻找该进程名称的新实例并附加到它。该过程将执行一点点,但轮询频率足够高,通常足够早地捕获事物。这是process launch --waitfor --name procname命令,简称pr la -w -n processname