如何附加到 LLDB 中的子进程
Posted
技术标签:
【中文标题】如何附加到 LLDB 中的子进程【英文标题】:How to attach to child process in LLDB 【发布时间】:2013-01-22 16:03:34 【问题描述】:我的进程启动子进程,我也想调试它们,在 OS X 上使用 LLDB。我在调试器中找不到任何自动附加选项。怎么做?
【问题讨论】:
相关:lldb equivalent of gdb's "follow-fork-mode" or "detach-on-fork" 【参考方案1】:https://bugs.llvm.org/show_bug.cgi?id=17972 似乎是一个相关的 LLDB 问题。
【讨论】:
【参考方案2】:Google 在这个问题上确实保持沉默,但我找到了解决方法。
运行您的主进程并在它衍生出任何子进程之前停止它。然后在函数fork
上下断点:
b fork
然后让程序继续。当它即将启动一个子进程时,将触发断点。此时,运行另一个 LLDB 实例并让它等待并自动附加到您的进程:
attach -w -n yourapp
现在让父程序继续。
【讨论】:
我应该如何创建lldb
的另一个实例?
打开另一个终端窗口并在命令行中运行lldb
attach -w -n
语法适用于 gdb。在 lldb 中是process attach -n myapp -w
,可以缩写为pro at -n myapp -w
。 lldb.llvm.org/lldb-gdb.html
我很难让 lldb 附加,因为我的子进程立即崩溃 (attach failed: process did not stop (no such process or permission problem?
)。添加sleep
调用以减慢速度,从而使 lldb 有时间附加。
当我尝试这个时,我得到“错误:附加失败:失去连接。”以上是关于如何附加到 LLDB 中的子进程的主要内容,如果未能解决你的问题,请参考以下文章