如何使用 gdb 单步执行可执行文件?

How do I step through an executable file using gdb?

我试图做的是在函数的每个汇编指令处记录存储在寄存器中的值。我所拥有的只是要使用的可执行文件。我已经想出了如何获得 asm 布局,但是很难逐步完成它。当我使用“b 1”命令设置一个我可以开始单步执行的断点时,我收到错误“文件”../sysdeps/i386/dl-procinfo.c 中没有第 1 行。这是显示命令的屏幕截图我已经输入了:

在放置断点时使用函数名称或内存地址,或者如果需要行号则不进行优化编译。

(gdb) b main // will put a break point at start of function main
(gdb) r      // run

或者,使用 start 命令在 main() 上设置临时断点并开始执行。

使用 n 移动到下一条指令,使用 si 进入函数/标签。

要显示registers,您可以使用info regs命令或i r。或者,使用寄存器布局,这要好得多。要获取特定寄存器内的值,请使用 print,例如 print $rax.

(gdb) layout regs