【问题标题】:Debugging a dylib in Xcode that was built without debug symbols在没有调试符号的情况下在 Xcode 中调试 dylib
【发布时间】:2013-12-06 17:19:08
【问题描述】:
我正在 Xcode 5 中构建一个 C++ 应用程序,该应用程序链接到外部动态库(OpenCV 2.4.6,通过 macports 安装)。这些动态库似乎是在没有调试符号的情况下编译的,因为当我在其中遇到错误时,我看不到源代码;我看到的只是汇编代码。
我已经从 OpenCV 网站单独下载了 OpenCV 源代码。有没有办法告诉 Xcode 在哪里寻找 dylib 的源文件,以便我可以在 Xcode 调试器中单步执行 OpenCV 代码?
【问题讨论】:
标签:
c++
debugging
opencv
xcode5
dylib
【解决方案1】:
不,这是不可能的。当使用调试支持编译库时,会将附加数据捆绑到共享库中,其中包含沿“地址 0x00240008 对应于 main.c:24”、“地址 0x0024001a 对应于 main.c:25”等行的映射. 如果模块是在没有调试支持的情况下构建的,那么文件现在只是包含机器代码的二进制 blob,并且调试器无法将机器语言翻译回源代码。
但是,由于您有源代码,您可以重新编译库以包含该信息并安装您的自定义版本。对于 OpenCV,这将是这样的命令:
cmake -DCMAKE_BUILD_TYPE:=Debug .