我在 Xcode 中使用通过 cmake 安装的库,我希望我的调试器在调试我的应用程序时单步执行该库的代码。
在构建并安装依赖项 cmake 项目后,依赖它的 cmake 项目将包含该项目。当它运行时,我想使用 Xcode 调试器单步执行依赖库的代码。
有没有办法告诉我的主应用程序的 Xcode 库的头文件、源代码和调试构建的二进制文件(如果需要)在哪里,以便我可以单步执行?
我发现了一些相关的问题,但没有一个提供直接的说明来配置你的库的源代码,以便在 GUI 的支持下在 Xcode 中找到。
- LLDB equivalent of gdb “directory” command for specifying source search path?
- In Xcode, how to debug with external libraries that you have the source for?
- Xcode equivalent of Visual Studio's “Find Source”
这是一个 example homebrew formula它安装一个 cmake 项目并启用调试符号。如果需要,我也可以想出一个使用该库的示例。
最佳答案
如果您将库的调试版本链接到您的应用程序中,并且您没有移动或删除用于构建它的 .o 文件或这些 .o 文件的源文件,那么您不应该必须做任何事情。 lldb 将从加载程序中获取库二进制文件的位置,并且将有一个指向 .o 文件的“调试映射”(在 OS X 上,存储实际调试信息的位置),然后 lldb 将读取该文件,调试信息将包含源文件的路径。
因此,如果您在库中的某些代码中停止时没有在 Xcode 中看到源代码,则此链的某些部分一定已损坏。
首先确保您确实在构建库的调试版本(构建 .o 文件的编译行应该包含 -g
。)
接下来,如果您的 make 进程在安装之前删除 .o 文件或剥离库,则 lldb 将无法从二进制文件跟踪到调试信息。解决此问题的最简单方法是使用 dsymutil 实用程序将 dSYM 作为构建过程的一部分,并将 dSYM 安装在 lldb 可以找到的位置(在库旁边,或在 Spotlight 搜索的任何位置)或使用 lldb 显式添加它添加-dsym 命令。请注意,如果库被剥离,您需要在它被剥离之前制作 dSYM。
最后,如果您要将源文件从构建时所在的位置移动,那么您可以使用第一个链接中描述的源映射。
关于c++ - 使用 Xcode 7 GUI (lldb) 调试 C++ 库源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32959192/