【发布时间】:2023-03-28 18:09:01
【问题描述】:
我的进程启动子进程,我也想调试它们,在 OS X 上使用 LLDB。我在调试器中找不到任何自动附加选项。怎么做?
【问题讨论】:
我的进程启动子进程,我也想调试它们,在 OS X 上使用 LLDB。我在调试器中找不到任何自动附加选项。怎么做?
【问题讨论】:
https://bugs.llvm.org/show_bug.cgi?id=17972 似乎是一个相关的 LLDB 问题。
【讨论】:
Google 在这个问题上确实保持沉默,但我找到了解决方法。
运行您的主进程并在它衍生出任何子进程之前停止它。然后在函数fork上下断点:
b fork
然后让程序继续。当它即将启动一个子进程时,将触发断点。此时,运行另一个 LLDB 实例并让它等待并自动附加到您的进程:
attach -w -n yourapp
现在让父程序继续。
【讨论】:
lldb的另一个实例?
attach -w -n 语法适用于 gdb。在 lldb 中是process attach -n myapp -w,可以缩写为pro at -n myapp -w。 lldb.llvm.org/lldb-gdb.html
attach failed: process did not stop (no such process or permission problem?)。添加sleep 调用以减慢速度,从而使 lldb 有时间附加。