LLDB - 设置源代码路径

Zoh*_*r81 5 c c++ debugging macos lldb

根据 lldb 的官方指南,在调试会话期间(使用命令source list)查看源代码的能力是通过为源文件设置新路径名来完成的。

即,如果我在一台计算机上的 /tmp 中编译我的项目并将其部署在源代码驻留在 /Users/Src/ 的另一台计算机上,我应该settings set target.source-map /tmp /Users/Src在部署机器中运行 lldb 。

但是,如果我从其他人那里获得了可执行文件,并且不知道构建目录会发生什么。并且可能源代码的组织方式与构建位置不同(但文件内容相同)。

我的问题是:

  1. lldb 是否知道如何在提供的路径中递归搜索匹配的源文件?

  2. 如何从 mach-o 可执行文件中获取原始路径名?

这是命令的正式描述:

重新映射调试会话的源文件路径名。如果您的源文件不再位于与程序构建时相同的位置 --- 也许程序是在不同的计算机上构建的 --- 您需要告诉调试器如何在其本地文件路径中找到源文件构建系统的文件路径。

Jim*_*ham 6

如果您知道相关代码中的函数名称,请执行以下操作:

(lldb) image lookup -vn <FunctionName> <BinaryImageNameContainingFunction>
Run Code Online (Sandbox Code Playgroud)

并查找CompileUnit条目。这里给出的路径是lldb从调试信息中得到的路径。

  • 您可以只提供基本名称(在您的情况下为 QtGui),这更简单并且是您所需要的,除非您有具有相同基本名称的捆绑包和共享库。不确定为什么完整路径不适合您。“image list”命令将列出所有图像,看看是否可以在那里找到该库。也许路径中有一个符号链接,所以你和 lldb 的拼写不同? (2认同)