如何附加LLDB中的子进程

Rom*_*šil 17 macos process lldb

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

Rom*_*šil 15

谷歌在这个问题上真的很安静,但我找到了一个解决方法.

运行您的主要过程并在它旋转任何孩子之前停止它.然后在函数上放置一个断点fork:

b fork
Run Code Online (Sandbox Code Playgroud)

让程序继续.当它即将启动子进程时,将触发断点.此时,运行另一个LLDB实例并让它等待并自动挂接到您的进程:

attach -w -n yourapp
Run Code Online (Sandbox Code Playgroud)

现在让父程序继续.

  • `attach -w -n`语法适用于gdb.在lldb中它是`process attach -n myapp -w`,可以缩写为`pro at -n myapp -w`.http://lldb.llvm.org/lldb-gdb.html (7认同)
  • 我应该如何创建另一个“lldb”实例? (2认同)
  • 我很难挂接lldb,因为我的子进程立即崩溃(“挂接失败:进程没有停止(没有这样的进程或权限问题?”)。添加一个“ sleep”调用以减慢速度,这给lldb腾出了时间。 (2认同)
  • 尝试此操作时,出现“错误:附加失败:连接丢失”。 (2认同)