gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:02:35 24 4
gpt4 key购买 nike

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

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

我乐观地认为我可以做一些事情,因为 gdb 能够正确调试和单步执行这些包中的代码——有人知道它在做什么吗?

更多信息:

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

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

我一直在对其进行测试的捆绑文件是使用以下方法生成的:

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 工作所需的信息。

最佳答案

事实证明,一种方法是使用 Apple 的 nm -pa *.bundle 来查找符号名称和给定偏移量的原始目标文件。

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

每个步骤都需要一些简单的输出解析,但它似乎确实有效™。如果有更强大的方法,我会很感兴趣。

关于c - 如何在 .bundle 文件中模拟 objdump --dwarf=decodedline?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10060544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com