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