在 GDB 中注释堆栈?

逆向工程 调试器 数据库
2021-06-24 11:06:59

是否有用于 GDB 的 GUI(甚至 CLI 脚本),可以使用保存的寄存器、每个帧等注释堆栈视图?应该可以在每次调用时收集此信息并将其添加到堆栈视图中。目前,我最终只是用类似 的东西来查看堆栈x/40wx $esp,这并不是很有启发性。

1个回答

Nemiver是 GDB 的 GUI,可能包含所有这些功能(请参阅功能页面以了解更多信息)。

但是,正如 0xC0000022L 在对您的问题的评论中提到的那样,GDB 已经通过info frame命令 (shorthand i f) 和backtrace命令 (shorthand bt)具有此类功能

(gdb) info frame
Stack level 0, frame at 0x7fffffffe250:
 rip = 0x400517 in foo (hello.c:6); saved rip 0x400531
 called by frame at 0x7fffffffe260
 source language c.
 Arglist at 0x7fffffffe240, args: val=10
 Locals at 0x7fffffffe240, Previous frame's sp is 0x7fffffffe250
 Saved registers:
  rbp at 0x7fffffffe240, rip at 0x7fffffffe248
(gdb) backtrace
#0  foo (val=10) at hello.c:6
#1  0x0000000000400531 in main () at hello.c:12
(gdb)

您可能会在 GDB 手册中找到一些有关堆栈探索的其他命令:检查堆栈