在远程机器上编译的调试过程

debugging process that compiled in remote machine

我在调试模式下编译了 Xcode 项目。然而,虽然 运行 它来自带有 lldb(或任何其他远程机器)的 VM,但我看不到任何调试符号。

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

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

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

在正常的build/debug 循环中,lldb 从构建过程中生成的.o 文件中读取调试信息。二进制产品中有一个 "debug map" 指向这些 .o 文件的位置。由于调试映射记录绝对路径,如果你想在另一台机器上使用 .o 文件,.o 文件必须出现在文件系统上的相同位置,因为它们在生成器上。

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