我知道如何使用 gdb 和使用过的信息框架,但我找不到基址、堆栈和保存的基址指针的值。我如何获得这些?我可以在信息框给我的信息中找到它们吗?还是我必须做其他事情?
最佳答案
info reg
会告诉你寄存器的内容,包括堆栈指针(rsp
on 64 bit x86)和基址指针(rbp
在 64 位 x86 上):
(gdb) info reg
rax 0x401340 4199232
rbx 0x0 0
rcx 0x0 0
rdx 0x7fffffffe608 140737488348680
rsi 0x7fffffffe5f8 140737488348664
rdi 0x0 0
rbp 0x0 0x0
rsp 0x7fffffffe508 0x7fffffffe508
r8 0x7ffff7dd4e80 140737351863936
r9 0x7ffff7dea560 140737351951712
r10 0x7fffffffe2d0 140737488347856
r11 0x7ffff7a50290 140737348174480
r12 0x4013e2 4199394
r13 0x7fffffffe5f0 140737488348656
r14 0x0 0
r15 0x0 0
rip 0x7ffff7a50290 0x7ffff7a50290 <__GI_exit>
eflags 0x202 [ IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
其余信息可通过信息框
获取:
(gdb) info frame
Stack level 0, frame at 0x7fffffffe510:
rip = 0x7ffff7a50290 in __GI_exit (exit.c:104); saved rip = 0x40134d
called by frame at 0x7fffffffe520
source language c.
Arglist at 0x7fffffffe500, args: status=0
Locals at 0x7fffffffe500, Previous frame's sp is 0x7fffffffe510
Saved registers:
rip at 0x7fffffffe508
关于c - 如何获取基指针、栈指针和保存基指针的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29087758/