GDB指令指针

GDB指令指针,gdb,virtual-memory,Gdb,Virtual Memory,这是命令信息帧的GDB输出 Stack level 1, frame at 0x7fff5fbffba0 rip = 0x100000ee4 in main (scc150_ex5.c:9); saved rip 0x100000eb4 caller of frame at 0x7fff5fbffb80 source language c. Arglist at 0x7fff5fbffb98, args: Locals at 0x7fff5fbffb98, Previous fram

这是命令信息帧的GDB输出

Stack level 1, frame at 0x7fff5fbffba0
rip = 0x100000ee4 in main (scc150_ex5.c:9);
   saved rip 0x100000eb4
caller of frame at 0x7fff5fbffb80
source language c.
Arglist at 0x7fff5fbffb98, args:
   Locals at 0x7fff5fbffb98,
Previous frame's sp is 0x7fff5fbffba0
Saved registers: rbp at 0x7fff5fbffb90,
   rip at 0x7fff5fbffb98
我不知道指令指针保存在哪里,它是否在
0x100000eb4
?另外,如果这个指令指针被无意中覆盖,它会不会“弄乱”整个程序?(我为使用混乱表示歉意)

谢谢

我不知道指令指针保存在哪里,它会在0x100000eb4吗

否。它保存在
0x7fff5fbffb98
。保存在那里的值为
0x100000eb4

另外,如果这个指令指针被无意中覆盖,它会不会“弄乱”整个程序

这取决于你所说的“把整个计划搞砸”是什么意思


当程序从
main
gdb
返回时,用例如
NULL
覆盖保存的位置将导致程序崩溃,告诉您保存
rip
的位置:“保存的寄存器:0x7fff5fbffb90处的rbp,0x7fff5fbffb98处的rip”