如何使用 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
我试图做的是在函数的每个汇编指令处记录存储在寄存器中的值。我所拥有的只是要使用的可执行文件。我已经想出了如何获得 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