Answers:
请记住,gdb是一个功能强大的命令-能够执行低级指令-因此与汇编概念紧密相关。
您正在寻找的被称为指令指针,即:
指令指针寄存器指向处理器下一步将尝试执行的存储器地址。指令指针在16位模式下称为ip,在32位模式下称为eip,在64位模式下称为rip。
这里更多细节
gdb执行时可用的所有寄存器都可以显示为:
(gdb) info registers
有了它,您可以找到程序正在运行的模式(查看存在哪些寄存器)
然后(这里用最普通的寄存器RIP如今,随着更换EIP或很少的ip如果需要的话):
(gdb)info line *$rip
将显示行号和文件来源
(gdb) list *$rip
会向您显示该行之前和之后的一些
但可能
(gdb) frame
在许多情况下应该足够了。
ip
这里从未使用过。另外,您可以使用GDB的别名代替:显式拼写程序计数器的名称$pc
。所以,x/10i $pc
将在反汇编当前指令指针10个指令,不管架构-它会在i386,x86_64的工作,ARM等
backtrace
或where
,甚至info line
只是bt
(用于回溯)。 dirac.org/linux/gdb上的gdb教程