【发布时间】:2017-03-20 12:57:57
【问题描述】:
根据 lldb 的官方指南,在调试会话期间查看源代码的能力(使用命令source list)是通过为源文件设置新路径名来完成的。
即如果我在一台计算机上的 /tmp 中编译我的项目并将其部署到另一台源代码位于 /Users/Src/ 的计算机上,我应该在部署机器中运行 lldb 时键入 settings set target.source-map /tmp /Users/Src。
但是,如果我从其他人那里获得可执行文件,但不知道构建目录,会发生什么情况。并且可能源代码的组织方式与构建的位置不同(但文件内容相同)。
我的问题是:
lldb 是否知道如何在提供的路径中递归搜索匹配的源文件?
如何从 mach-o 可执行文件中获取原始路径名?
这是命令的正式描述:
重新映射调试会话的源文件路径名。如果您的源文件不再位于与构建程序时相同的位置 --- 可能程序是在不同的计算机上构建的 --- 您需要告诉调试器如何在其本地文件路径中找到源文件构建系统的文件路径。
【问题讨论】:
-
我对 lldb 和 osx 都不熟悉,但我建议您尝试使用
readelf -a和objdump -p从可执行文件中获取一些路径信息。但是readelf似乎在osx中不可用,stackoverflow.com/questions/3286675/… -
感谢您的评论。但是,ORX 可执行二进制结构与 ELF 不同,称为 MACH-O,但我会尝试找到 objdump 的同义词。
标签: c++ c macos debugging lldb