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