如何在.bundle文件中模拟objdump--dwarf=decodedline?

如何在.bundle文件中模拟objdump--dwarf=decodedline?,c,macos,gdb,dwarf,C,Macos,Gdb,Dwarf,我已经成功地使用objdump--dwarf=decodedline在Linux上的.so文件中查找每个偏移量的源位置 不幸的是,在Mac OS X上,.bundle文件(用作共享库)似乎不能以这种方式查询 我乐观地认为我可以做些什么,因为gdb能够正确地调试和逐步完成这些捆绑包中的代码-有人知道它在做什么吗 进一步资料: dwarfdump实用程序声称.bundle文件不包含DWARF数据,但它确实包含stab数据;但是,objdump--stabs也找不到任何stabs数据 (如果这使问题更

我已经成功地使用
objdump--dwarf=decodedline
在Linux上的
.so
文件中查找每个偏移量的源位置

不幸的是,在Mac OS X上,
.bundle
文件(用作共享库)似乎不能以这种方式查询

我乐观地认为我可以做些什么,因为
gdb
能够正确地调试和逐步完成这些捆绑包中的代码-有人知道它在做什么吗

进一步资料:

dwarfdump
实用程序声称.bundle文件不包含DWARF数据,但它确实包含stab数据;但是,
objdump--stabs
也找不到任何stabs数据

(如果这使问题更容易回答,我实际上并不需要所有偏移量;能够查询任何给定偏移量的源位置就足够了)

我一直在测试的bundle文件是通过以下方式生成的:

cc -dynamic -bundle -undefined suppress -flat_namespace -g -o c_location.bundle c_location.o -L. -L/Users/User/.rvm/rubies/ruby-1.8.7-p357/lib -L.     -lruby  -ldl -lobjc

原始的c_location.o文件确实包含了
objdump--dwarf=decodedline
工作所需的信息。因此,一种方法是使用苹果的
nm-pa*.bundle
查找给定偏移量的符号名和原始对象文件

一旦你有了它,你可以首先使用
objdump-tT
来找到原始对象文件中符号名的偏移量;然后像前面一样使用
objdump--dwarf=decodedline


每一步都需要一点简单的输出解析,但似乎确实有效™. 我对是否有更可靠的方法感兴趣。

因此,一种方法是使用苹果的
nm-pa*.bundle
查找给定偏移量的符号名和原始对象文件

一旦你有了它,你可以首先使用
objdump-tT
来找到原始对象文件中符号名的偏移量;然后像前面一样使用
objdump--dwarf=decodedline

每一步都需要一点简单的输出解析,但似乎确实有效™. 如果有更可靠的方法,我会很感兴趣