使用gdb进行反汇编结果不同。

使用gdb进行反汇编,直接按照函数名skip反汇编出的指令和按照地址反汇编出的指令不同,但是gdb的提示皆为 函数skip 的反汇编,请问这是什么原因呢?

在尝试中发现,程序运行前进行反汇编skip和运行后按照地址汇编是相同的。

反汇编的是csapp的bomb lab中的bomb

backtrace 显示的地址是 skip 函数在哪里被调用,和 skip 函数定义的位置当然不一样

https://visualgdb.com/gdbreference/commands/backtrace

谢谢!我看了链接以后发现,里面是说返回的是information about the current function,这边的地址应该就是当前函数所在的地址,而不是调用的地址。

而且我对其中的案例进行实验,发现直接 disassemble->level0 和 进入 dissassemble-> *bt 后所得的level0地址*得到的结果一致,后面是我的实验截图。

我另外还发现,无论什么c语言程序,无论里面有没有skip函数,只要gdb调试运行即r后,都能disassemble skip