GDB 7.5 (OS X):无法从库函数访问源代码



gdb newbie这里,所以我希望我没有忽略一些明显的东西……(如果我这样做,也许一个善良的灵魂可以指出这一点?

我正在调试OS X Lion下的GCC C 应用程序。由于STL非常沉重,我真的很想使用带有Python支持的GDB版本(即> = V7)来精美地打印容器。我的应用程序被分成一个后端库(.dylib),该库可以完成所有繁重的工作和非常简单的前端应用程序。所有的来源和二进制文件都低于一个通用的源路径,并且所有内容都用调试符号(我尝试了-g和-ggdb)。

)。

使用Xcode中的GDB版本(标识为" GNU GDB 6.3.50-20050815(Apple版本GDB-1820)"),在回溯中显示的帧源线,无论如何,无论如何是否在前端应用程序或后端库中进行相应的呼叫:

(GDB)F 12

##12 0x00000000010002ddc5 in fl3d :: resource :: createMesh_(this = 0x7fff5fbff7c8,fl3d =@0x7fff5fbff1f8,id =)at/deevelopment/workspace/flweverment/workspace/fl3d/libfl3d/libfl3d/libfl3dd/libfl3dd/ribfl3dd/resource.cpp:234

234 std :: vector&t = textureIndices_.at(i);

(gdb)

到目前为止一切都很好。另一方面,GDB 7.5和7.4.1拒绝从图书馆给我任何源线:

(GDB)F 12

##12 0x000000010002ddc5 in fl3d :: resource :: createMesh_(fl3d :: fl3ddparser&,std :: string)()()() 来自/Development/workspace/fl3d/libfl3d/build/libfl3d.dylib

(gdb)

我真的对给出的不同响应感到困惑 - gdb6在源文件和正确行的正确路径上打印了正确的路径,而gdb7正确地获取了函数原型(据推测是从.dylib的调试符号中读取的?),但是似乎对来源一无所知。不过,有趣的是,它确实显示了frontend的main()函数中的呼叫的相应源线!

我已经尝试使用" dir libfl3d"手动设置库源文件的路径,但这并不能改变任何东西。我还注意到GDB6在我运行应用程序时几次说"共享库的阅读符号",而gdb7却没有 - 但是符号似乎并不是问题所在,因为两个版本似乎都正确地解决了这些符号?

我在这里的智慧。任何指针?

Apple GDB正在显示调试信息,因为它知道如何查找&在此平台上解析矮人。您正在显示的GDB版本7是GDB,不知道如何在Mac OS X系统上找到矮人调试信息 - 您上面显示的输出是No debug-Info的样子。我的猜测是,FSF GDB版本7对Mac OS X的支持并没有引起很多关注,我会犹豫建议在此平台上使用它。

as bames53 注意,此时使用Mac OS X上的LLDB要好得多。这是所有支持工作的调试器,并且Objective-C/C 容器支持正在迅速添加到LLDB,但没有将其添加到GDB中。Apple提供的GDB处于寿命末路径,将来将把所有用户切换到LLDB。

尝试LLDB。有点不同,但是很好。有一个备忘单在开始时发现有用,它显示了GDB和LLDB命令等价。http://lldb.llvm.org/lldb-gdb.html

最新更新