4

我是一位经验丰富的 Visual Studio 开发人员,最近参与了一个 OSX 10.6 项目(一个没有 UI 的 C++ 服务器项目)。

几个月来,我一直在使用 XCode 调试器(设置断点等)成功调试应用程序,包括调试链接到最终可执行程序的各种静态库的源代码。

然而,今晚我需要调试(使用断点)一个 DYLIB,它也是从我们的源代码构建的,但它在运行时与应用程序动态链接(DYLIB 的名称是从主应用程序的 .ini 文件中读取的)。

不幸的是,我使用调试应用程序的常用方法(右键单击自定义可执行文件并选择“使用断点调试”),尽管它确实成功运行了调试器并允许我调试应用程序(以及它的静态链接库),当我尝试在 DYLIB 的源代码中命中断点时,会出现以下不良行为:

-> XCode 调试器报告断点被击中,因为我在 XCode 窗口底部的状态栏中看到函数和行号(以及表明这是一条 gdb 消息的指示),并且应用程序暂停执行。但是,没有堆栈跟踪,没有变量,什么都没有——只是一个完全空的调试器窗口。“越过”、“进入”等按钮被禁用。调试器中没有出现编辑器窗口(因此没有视觉指示调试器已在指示的行上停止)。手动打开文件不会显示调试器命中该行。

不幸的是,就我调试 DYLIB 的尝试而言,这对我来说毫无用处。

今晚我进行了广泛的研究,研究并试图找到一种方法,让 XCode 调试器在这个动态链接的 DYLIB 的源代码中以一种有意义的方式成功地命中断点。我当然做了一些清理/重建。我已经确定“延迟加载符号”未选中,然后清理/重建。我已经重新启动了,我也删除了“build”目录并重建。我还删除了 .xcodeproj 包中的用户特定文件。(另请注意,我当然是在开发模式下构建和运行所有代码,包括 DYLIB 代码,关闭所有优化,并为所有代码生成调试符号。)但是,我的尝试没有成功。在互联网论坛上,我也找不到任何关于这个问题的提及。

指导我如何使用 XCode 成功调试链接到我的应用程序的 DYLIB 的任何帮助将不胜感激。

谢谢,丹。

4

1 回答 1

3

更新 -

此问题已解决。是我缺乏使用 OSX 的经验导致我看不到这一点。尽管我的 DYLIB 项目与调用它的可执行文件是同一个 XCode 项目的一部分,并且尽管 DYLIB 构建在与可执行文件相同的目录中,但在运行时被调试的应用程序并没有从中访问 DYLIB地点。相反,它是从(不同的)安装位置访问它。到目前为止,我还没有找到将安装位置“煮熟”到应用程序中的位置,而是通过将最终的可执行文件/DYLIB 复制到预期的安装位置并创建一个指向该位置的可执行文件的新自定义可执行文件,调试DYLIB 和可执行文件的工作。

谢谢,丹。

于 2011-01-19T18:25:10.320 回答