如何将gdb中的$eip映射到objdump-d的输出?

如何将gdb中的$eip映射到objdump-d的输出?,gdb,objdump,Gdb,Objdump,我有一个不完整的stacktrace,它停在一个已知的库(linux i686体系结构)上。为了确定上次调用的函数,我尝试将$eip映射为gdb的输出,映射到“objdump-dlibrary.so”生成的文件中的地址。 我想我可能能够使用gdb中“info shared”的From地址输出以及$eip来计算偏移量,然后我可以将其转换为objdump-d输出的反汇编文本部分的偏移量? 不确定这种方法是否合理,但在一个带有共享库的简单测试工具应用程序中尝试它并不能在正确的函数中为我提供地址。 非常

我有一个不完整的stacktrace,它停在一个已知的库(linux i686体系结构)上。为了确定上次调用的函数,我尝试将$eip映射为gdb的输出,映射到“objdump-dlibrary.so”生成的文件中的地址。 我想我可能能够使用gdb中“info shared”的From地址输出以及$eip来计算偏移量,然后我可以将其转换为objdump-d输出的反汇编文本部分的偏移量? 不确定这种方法是否合理,但在一个带有共享库的简单测试工具应用程序中尝试它并不能在正确的函数中为我提供地址。 非常感谢您的帮助

我想我可能能够使用gdb中“info shared”的From地址输出以及$eip来计算偏移量,然后我可以将其转换为objdump-d输出的反汇编文本部分的偏移量

是的,这正是你需要做的

GDB显示屏中的
From
地址告诉您共享库的
.text
部分的位置

readelf-S foo.so | grep'\.text'
将告诉您
foo.so
本身中
.text
的偏移量。将其中一个从另一个中减去,您将获得该共享库的重新定位(它将是页面对齐的)

现在从GDB中获取
$eip
,减去重新定位,您将得到一个地址,该地址将匹配
nm
objdump
对于
foo.so
的输出

然而,GDB已经在内部完成了上述所有步骤。如果无法推断出$eip最终使用了哪个函数,您不应该期望手动执行这些步骤会产生更好的结果

我想我可能能够使用gdb中“info shared”的From地址输出以及$eip来计算偏移量,然后我可以将其转换为objdump-d输出的反汇编文本部分的偏移量

是的,这正是你需要做的

GDB显示屏中的
From
地址告诉您共享库的
.text
部分的位置

readelf-S foo.so | grep'\.text'
将告诉您
foo.so
本身中
.text
的偏移量。将其中一个从另一个中减去,您将获得该共享库的重新定位(它将是页面对齐的)

现在从GDB中获取
$eip
,减去重新定位,您将得到一个地址,该地址将匹配
nm
objdump
对于
foo.so
的输出

然而,GDB已经在内部完成了上述所有步骤。如果无法推断出$eip最终使用了哪个函数,您不应该期望手动执行这些步骤会产生更好的结果