【问题标题】:How to attach to child process in LLDB如何附加到 LLDB 中的子进程
【发布时间】:2023-03-28 18:09:01
【问题描述】:

我的进程启动子进程,我也想调试它们,在 OS X 上使用 LLDB。我在调试器中找不到任何自动附加选项。怎么做?

【问题讨论】:

标签: macos process lldb


【解决方案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 -wlldb.llvm.org/lldb-gdb.html
    • 我很难让 lldb 附加,因为我的子进程立即崩溃 (attach failed: process did not stop (no such process or permission problem?)。添加sleep 调用以减慢速度,从而使 lldb 有时间附加。
    • 当我尝试这个时,我得到“错误:附加失败:失去连接。”
    猜你喜欢
    • 1970-01-01
    • 2015-02-19
    • 2015-01-30
    • 2021-06-09
    • 1970-01-01
    • 2019-04-18
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多