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

时间:2015-08-26 13:52:31

标签: c++ c macos debugging lldb

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

要解决此问题,我已在本地编译机器中创建了指向项目源代码的软链接,以便每个文件具有相同的路径。

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

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

1 个答案:

答案 0 :(得分:1)

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

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