使用lldb/Xcode进行远程调试

17

我有两个站点,一个是开发站点,另一个是测试站点。我希望能够在测试站点上运行和调试在发布模式下构建的目标(代码已经被剥离)。由于出于安全原因,代码可能无法复制到测试站点,因此我尝试了远程调试,如下面链接中所述 - http://lldb.llvm.org/remote.html

由于调试的两端都运行OS X,设置说明指定我的本地(开发)站点应该运行'lldb-server'以及'debugserver',而远程(测试)侧应该运行 'platform'。

不幸的是,我在Xcode捆绑包中找不到所有这些工具。我还尝试下载lldb源代码并自己创建这些可执行文件,但我仍然缺少lldb-server目标。

我希望有一个清晰而全面的指南,从头到尾告诉我如何正确地进行lldb远程调试。


1
很可能lldb在本地系统上找不到可执行文件的调试信息。debugserver不会处理调试信息,这不是它的工作,因此lldb将需要在本地找到调试信息才能进行符号调试。如果您有一个已构建的本地可执行文件副本 - 出于性能原因,您无论如何都需要保留它,因为这将加速调试 - 那么尝试在启动lldb时将路径传递给本地副本。 - Jim Ingham
1
不要只编辑问题,您可以将解决方案添加到答案中并接受它作为解决方案。这将使其他人更容易发现如果他们在未来遇到相同的问题。 - Valdimar
如果您愿意,能否写一份明确而全面的指南,从头到尾讲述如何正确执行lldb远程调试? - Kyle KIM
2个回答

16
  1. 确保 Xcode 已在两台计算机上安装(不同版本也可以)。

  2. 在运行可执行文件的远程计算机上:

    1. 启动你想要调试的应用程序。
    2. 启动 debugserver,并附加到你的应用程序,等待来自另一台 Mac 的连接: /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/Resources/debugserver development-mac.local:16000 --attach="Photo Booth"
  3. 在开发机器上:

    1. 键入 lldb 启动 lldb。
    2. 连接到调试服务器: process connect connect://test-mac.local:16000

现在,在测试机器上,你应该看到消息 Waiting for debugger instructions for process 0。过一段时间后,你的开发机器上将出现 (lldb) 提示符,然后你就可以像平常一样开始调试了。

不幸的是,我不确定如何从 Xcode 进行连接。


它会从远程下载二进制文件吗?我正在尝试调试一个应用程序,但它在connect命令处卡住了。在活动监视器中,我可以看到lldb正在下载某些内容,但即使过了一个小时,什么也没有发生。 - Vivek Kumar
@VivekKumar 我通过在 process connect ... 命令之前发出 platform select remote-macosx 命令来解决了问题。@JakobEgger 请更新你的答案。 - Bemipefe
在我的情况下,我不得不输入以下命令到 lldb 提示符中:platform connect connect://test-mac.local:16000 否则 lldb 会挂起。有关更多详细信息,请参阅官方文档:https://lldb.llvm.org/use/remote.html - Bemipefe
这对我起作用了,除了我必须使用IP地址而不是主机名。 - Jonas Due Vesterheden

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接