use*_*307 94
'frame'命令将为您提供所需的内容.(这可以缩写为'f').这是一个例子:
(gdb) frame
\#0 zmq::xsub_t::xrecv (this=0x617180, msg_=0x7ffff00008e0) at xsub.cpp:139
139 int rc = fq.recv (msg_);
(gdb)
Run Code Online (Sandbox Code Playgroud)
没有参数,'frame'只是告诉你你在哪里(用一个参数来改变框架).有关frame命令的更多信息,请参见此处.
alb*_*fan 18
请记住,gdb是一个功能强大的命令 - 能够执行低级指令 - 因此与程序集概念相关联.
你要找的是de指令指针,即:
指令指针寄存器指向处理器下次尝试执行的存储器地址.指令指针被称为IP在16位模式下,EIP在32位模式,和撕裂在64位模式.
这里有更多细节
gdb执行时可用的所有寄存器都可以显示:
(gdb) info registers
Run Code Online (Sandbox Code Playgroud)
有了它,你可以找到你的程序运行的模式(查看这些寄存器中存在哪些)
然后(这里使用最常见的寄存器rip,如果需要,用eip或非常少的ip替换):
(gdb)info line *$rip
Run Code Online (Sandbox Code Playgroud)
将显示行号和文件来源
(gdb) list *$rip
Run Code Online (Sandbox Code Playgroud)
会告诉你之前和之后的几行
但可能
(gdb) frame
Run Code Online (Sandbox Code Playgroud)
在很多情况下应该足够了.