c++ - 如何在 XCode 中调试 DYLIB?

标签 c++ xcode macos dylib

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

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

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

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

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

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

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

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

谢谢, 丹.

最佳答案

更新-

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

谢谢, 丹.

关于c++ - 如何在 XCode 中调试 DYLIB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4711999/

相关文章:

ios - 如何将图像添加到 xcode,以便它们在从计算机中删除/移动时不会消失。

输入多于某些输入行时 C++ 程序不工作

bash - 如何绑定(bind)向上箭头键以转到下一个唯一命令(macOS 终端)?

python - 安装 Python bigfloat 模块

c++ - 全局摆脱警告C4503

c++ - expat 对 `XML_SetElementHandler' 的 undefined reference

c++ - 教育 - 使用 Rcpp 理解递归函数的可变性能

c++ - int **a 和 int a[][] 作为 C 和 C++ 中的函数参数之间的确切区别是什么?

iphone - 如何在相关 View Controller 中获取我的 tabbarcontroller 的选定索引?

macos - 确保/usr/local/bin 在我的 Mac 上的 $PATH 中