如何在.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
每一步都需要一点简单的输出解析,但似乎确实有效™. 如果有更可靠的方法,我会很感兴趣