【问题标题】:debugging process that compiled in remote machine在远程机器上编译的调试过程
【发布时间】:2015-11-20 14:37:33
【问题描述】:

我在调试模式下编译了 Xcode 项目。但是,在使用 lldb(或任何其他远程机器)从 VM 运行它时,我看不到任何调试符号。

为了解决这个问题,我在本地编译机中创建了一个指向项目源代码的软链接,这样每个文件都有相同的路径。

但是,与本地 VM 不同,在远程机器上我可能没有源代码访问权限。

所以我的问题是我应该将哪些文件从编译机中的项目调试输出复制到远程机器,以便 lldb 调试器能够识别目标符号,以及我应该如何“告诉”lldb 查看这些新数据,而不是原始符号位置(在编译机中)

【问题讨论】:

  • 源代码调试与符号的可用性不同。试试:lldb.llvm.org/remote.html
  • @jxh :我不需要远程调试,因为我能够登录到远程机器并将 lldb 附加到正在运行的进程。唯一的问题是缺少调试信息
  • 远程调试可能比复制源代码更简单。

标签: c++ c macos debugging lldb


【解决方案1】:

在正常的构建/调试周期中,lldb 从构建过程中生成的 .o 文件中读取调试信息。二进制产品中有一个“调试图”,它指向这些 .o 文件的位置。由于调试映射记录了绝对路径,因此如果您想在另一台机器上使用 .o 文件,则 .o 文件必须出现在文件系统上与构建器上相同的位置。

另一种方法是使用 Xcode 的“DWARF + dSYM”调试信息生成变体,它会构建一个“.dSYM”文件夹,其中包含完全链接的调试信息。然后只需将 dSYM 和二进制文件移动到同一目录,lldb 就会找到它。如果由于某种原因不起作用,还有一个 lldb 命令:add-dsym,您可以使用它手动告诉 lldb dSYM 在哪里。

【讨论】:

  • 需要明确的是,以上描述仅适用于在 OS X 上构建程序。
猜你喜欢
  • 1970-01-01
  • 2019-02-12
  • 2011-09-21
  • 2017-01-14
  • 2016-02-06
  • 2012-05-24
  • 1970-01-01
  • 2011-09-30
  • 2013-10-30
相关资源
最近更新 更多