我是一位经验丰富的 Visual Studio 开发人员,最近参与了一个 OSX 10.6 项目(一个没有 UI 的 C++ 服务器项目)。
几个月来,我一直在使用 XCode 调试器(设置断点等)成功调试应用程序,包括调试链接到最终可执行程序的各种静态库的源代码。
然而,今晚我需要调试(使用断点)一个 DYLIB,它也是从我们的源代码构建的,但它在运行时与应用程序动态链接(DYLIB 的名称是从主应用程序的 .ini 文件中读取的)。
不幸的是,我使用调试应用程序的常用方法(右键单击自定义可执行文件并选择“使用断点调试”),尽管它确实成功运行了调试器并允许我调试应用程序(以及它的静态链接库),当我尝试在 DYLIB 的源代码中命中断点时,会出现以下不良行为:
-> XCode 调试器报告断点被击中,因为我在 XCode 窗口底部的状态栏中看到函数和行号(以及表明这是一条 gdb 消息的指示),并且应用程序暂停执行。但是,没有堆栈跟踪,没有变量,什么都没有——只是一个完全空的调试器窗口。“越过”、“进入”等按钮被禁用。调试器中没有出现编辑器窗口(因此没有视觉指示调试器已在指示的行上停止)。手动打开文件不会显示调试器命中该行。
不幸的是,就我调试 DYLIB 的尝试而言,这对我来说毫无用处。
今晚我进行了广泛的研究,研究并试图找到一种方法,让 XCode 调试器在这个动态链接的 DYLIB 的源代码中以一种有意义的方式成功地命中断点。我当然做了一些清理/重建。我已经确定“延迟加载符号”未选中,然后清理/重建。我已经重新启动了,我也删除了“build”目录并重建。我还删除了 .xcodeproj 包中的用户特定文件。(另请注意,我当然是在开发模式下构建和运行所有代码,包括 DYLIB 代码,关闭所有优化,并为所有代码生成调试符号。)但是,我的尝试没有成功。在互联网论坛上,我也找不到任何关于这个问题的提及。
指导我如何使用 XCode 成功调试链接到我的应用程序的 DYLIB 的任何帮助将不胜感激。
谢谢,丹。