这是命令信息框的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
吗?如果这个指令指针被无意中覆盖,那么它会“搞乱”整个程序吗? (我为混乱的使用而道歉。)
由于
答案 0 :(得分:0)
我对指令保存的位置感到困惑,是否为0x100000eb4
没有。它保存在0x7fff5fbffb98
。保存在那里的值为0x100000eb4
。
此外,如果要无意中覆盖此指令指针,是否只会“弄乱”整个程序?
取决于“弄乱整个程序”的意思。
用例如覆盖保存的位置NULL
会导致程序从main
返回时崩溃。