Zoh*_*r81 5 c c++ debugging macos lldb
根据 lldb 的官方指南,在调试会话期间(使用命令source list
)查看源代码的能力是通过为源文件设置新路径名来完成的。
即,如果我在一台计算机上的 /tmp 中编译我的项目并将其部署在源代码驻留在 /Users/Src/ 的另一台计算机上,我应该settings set target.source-map /tmp /Users/Src
在部署机器中运行 lldb 。
但是,如果我从其他人那里获得了可执行文件,并且不知道构建目录会发生什么。并且可能源代码的组织方式与构建位置不同(但文件内容相同)。
我的问题是:
lldb 是否知道如何在提供的路径中递归搜索匹配的源文件?
如何从 mach-o 可执行文件中获取原始路径名?
这是命令的正式描述:
重新映射调试会话的源文件路径名。如果您的源文件不再位于与程序构建时相同的位置 --- 也许程序是在不同的计算机上构建的 --- 您需要告诉调试器如何在其本地文件路径中找到源文件构建系统的文件路径。
如果您知道相关代码中的函数名称,请执行以下操作:
(lldb) image lookup -vn <FunctionName> <BinaryImageNameContainingFunction>
Run Code Online (Sandbox Code Playgroud)
并查找CompileUnit
条目。这里给出的路径是lldb从调试信息中得到的路径。