C++ 在远程计算机中编译的调试进程

C++ 在远程计算机中编译的调试进程,c++,c,macos,debugging,lldb,C++,C,Macos,Debugging,Lldb,我在调试模式下编译了Xcode项目。但是,当使用lldb从VM(或任何其他远程机器)运行它时,我看不到任何调试符号 为了解决这个问题,我在本地编译机器中创建了一个指向项目源代码的软链接,这样每个文件都有相同的路径 然而,和本地VM不同,在远程机器中,我可能没有源代码访问权限 因此,我的问题是,我应该将哪些文件从编译机器中的项目调试输出复制到远程机器,以便lldb调试器识别目标符号,以及我应该如何“告诉”lldb查看这些新数据,而不是原始符号的位置(在编译机器中)在正常的生成/调试周期中,lldb

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

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

然而,和本地VM不同,在远程机器中,我可能没有源代码访问权限


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

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


另一种方法是使用Xcode的调试信息生成的“DWARF+dSYM”变体,它构建一个包含完全链接的调试信息的“.dSYM”文件夹。然后只需将dSYM&二进制文件移动到同一目录,lldb就会找到它。如果由于某种原因无法正常工作,那么还有一个lldb命令:
adddsym
,您可以使用该命令手动告诉lldb dsym的位置。

源代码调试与符号的可用性不同。Try:@jxh:我不需要远程调试,因为我可以登录到远程机器并将lldb连接到正在运行的进程。唯一的问题是缺少调试Informote调试可能比复制源代码更容易解决。要清楚,上面的描述只适用于在OS X上构建程序。