【问题标题】: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 .
    

    【讨论】:

    • 谢谢,瑞恩,这似乎成功了。我使用了您的 cmake 变量,但使用了 OpenCV Linux installation instructions 中的语法,现在我可以在调试时进入 OpenCV 代码。编译源代码比我预期的要容易得多!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2020-09-14
    相关资源
    最近更新 更多