调试在没有调试符号的情况下构建的Xcode中的dylib

时间:2013-11-22 00:08:34

标签: c++ debugging opencv xcode5 dylib

我正在Xcode 5中构建一个C ++应用程序,它链接到外部动态库(OpenCV 2.4.6,通过macports安装)。这些动态库似乎是在没有调试符号的情况下编译的,因为当我在其中遇到错误时,我看不到源代码;我看到的只是汇编代码。

我已经从OpenCV网站单独下载了OpenCV源代码。有没有办法告诉Xcode在哪里查找dylib的源文件,以便我可以在Xcode调试器中单步执行OpenCV代码?

1 个答案:

答案 0 :(得分:1)

不,这是不可能的。当使用调试支持编译库时,附加数据被捆绑到共享库中,该库包含“地址0x00240008对应于main.c:24”,“地址0x0024001a对应于main.c:25”等行的映射。如果模块是在没有调试支持的情况下构建的,那么这些文件现在只是包含机器代码的二进制blob,调试器无法将机器语言转换回源代码。

但是,由于您拥有源代码,因此可以重新编译库以包含该信息并安装自定义版本。对于OpenCV,这将是一个这样的命令:

cmake -DCMAKE_BUILD_TYPE:=Debug .