使用 lldb/Xcode 进行远程调试

Posted

技术标签:

【中文标题】使用 lldb/Xcode 进行远程调试【英文标题】:Remote debugging using lldb/Xcode 【发布时间】:2016-02-06 17:57:09 【问题描述】:

我有 2 个工作站,一个用于开发,另一个用于测试。我希望能够在测试站上运行和调试在发布模式下构建的目标(代码被剥离)。

由于出于安全原因,可能不会将代码复制到测试站,因此我已尝试按照以下链接中所述进行远程调试 - http://lldb.llvm.org/remote.html

由于调试的双方都运行 OS X,设置说明指定我的本地(开发)站应与“调试服务器”一起运行“lldb-server”,而远程(测试)端应运行“平台”。

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

我希望我有一些关于如何从头到尾正确进行 lldb 远程调试的清晰而全面的指南。

【问题讨论】:

很可能 lldb 在本地系统上找不到可执行文件的调试信息。 debugserver 不对调试信息做任何事情,这不是它的工作,因此 lldb 必须在本地查找调试信息才能进行符号调试。如果您有已构建的可执行文件的本地副本 - 出于性能原因,您无论如何都希望拥有它,因为这将加快调试速度 - 然后尝试在启动时将本地副本的路径传递给 lldb。 您可以将它们添加到答案中,然后接受它作为解决方案,而不仅仅是编辑问题吗?这将使其他人更容易发现他们是否有同样的问题。 如果你这样做了,请你写一些关于如何正确地从A到Z进行lldb远程调试的清晰而全面的指南? 【参考方案1】:

请为 Apple 提供反馈以更新其文档here

与此同时,我使用 hopperapp 和应用程序反汇编获得了更多里程。 http://hopperapp.com/ 有一个免费试用版 - 它有一个远程调试器可用。

【讨论】:

【参考方案2】:

    确保两台机器上都安装了 Xcode。 (不同版本都可以!)

    在远程机器上(运行可执行文件):

      启动要调试的应用程序 启动调试服务器,附加到您的应用程序,并侦听来自另一台 Mac 的连接: /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/Resources/debugserver development-mac.local:16000 --attach="Photo Booth"

    在开发机器上:

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

在测试机器上,您现在应该会看到消息Waiting for debugger instructions for process 0。片刻之后,(lldb) 提示应该会出现在您的开发机器上,您可以正常开始调试了。

很遗憾,我不确定如何从 Xcode 进行连接。

【讨论】:

它是否从远程下载二进制文件?我正在尝试调试应用程序,但它卡在connect 命令。在活动监视器中,我可以看到 lldb 正在下载一些东西,但即使一个小时后,也没有任何反应。 @VivekKumar 我通过在process connect ... 命令之前发出命令platform select remote-macosx 解决了这个问题。 @JakobEgger 请更新您的答案。 同时避免使用--attach="MyApp",因为这也会引起鬼婆。删除该选项并将其替换为可执行文件的路径。所以基本上你需要从命令启动可执行文件或从客户端远程启动它。在这种情况下,您需要仅使用 host:port 选项运行 debugserver 命令并发出run 命令。有关详细信息,请参阅此页面:lldb.llvm.org/use/remote.html

以上是关于使用 lldb/Xcode 进行远程调试的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Idea 远程调试 Java 代码

Java使用Eclipse进行远程调试,Linux下开启远程调试

使用 Intellij Idea 进行远程调试

使用GDB进行嵌入式远程调试

flinkFlink 使用IntelliJ IDEA 进行远程调试代码

Java使用Eclipse进行远程调试,Windows下开启远程调试