c - 如何获取基指针、栈指针和保存基指针的值

标签 c pointers gdb stack

我知道如何使用 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/

相关文章:

c++ - 在 C/C++ 中加载 OpenSSL 自定义引擎

C++继承类,将修改后的参数发送给父级的构造函数

c - 在每个函数的开头应用断点

linux - 如何让 gdb 从已安装的库中加载符号?

c - wifi网络中其他wifi设备的MAC地址

c - 为什么我们应该在 C/C++ 中使用数组指针?

c - 结构数组上的 realloc() 给出无效的下一个大小

ios - 无法理解 NSError/NSObject 指针传递行为

c - 如何在 Windows C 代码中检测 gdb?

c - 串行读取时丢失数据