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