Assembly arm elf gdb单步执行程序
在我的学校实验室里,我被要求使用arm elf gdb一步一步地调试一个程序(用汇编编写)。当我在启动时设置一个断点,然后运行程序并逐步通过它来显示寄存器的当前值。但是,当我尝试单步执行时,调试器不会显示寄存器的值。我使用“I r”来显示寄存器的最终值,但我需要看到值一步一步地变化。知道调试器为什么不显示这些值吗 提前谢谢 汇编代码:Assembly arm elf gdb单步执行程序,assembly,gdb,arm,Assembly,Gdb,Arm,在我的学校实验室里,我被要求使用arm elf gdb一步一步地调试一个程序(用汇编编写)。当我在启动时设置一个断点,然后运行程序并逐步通过它来显示寄存器的当前值。但是,当我尝试单步执行时,调试器不会显示寄存器的值。我使用“I r”来显示寄存器的最终值,但我需要看到值一步一步地变化。知道调试器为什么不显示这些值吗 提前谢谢 汇编代码: .text @ Executable code below _start: .global _
.text @ Executable code below
_start: .global _start @ "_start" is required by the linker
.global main @ "main" is the main program
b main @ Start the main program
main: @ Entry to function "main"
mov r0, #10
mov r1, #3
add r2, r1, r0 @ r2 = r1 + r0
sub r3, r0, r1 @ r3 = r1 - r0
mul r1, r0, r1 @ r1 = r0 * r1
swi 0x11 @ Software interrupt to terminate
.end
您可以创建一个gdb宏,在每个步骤后显示寄存器:
(gdb) def z
Type commands for definition of "z".
End with a line saying just "end".
>si
>i r
>end
(gdb) z
r0 0x1 1
r1 0x69b6cae8 1773587176
r2 0x0 0
r3 0x69b6502c 1773555756
r4 0x620f14c0 1645155520
r5 0x68613870 1751201904
r6 0x0 0
r7 0x632aa214 1663738388
r8 0x699c5c50 1771854928
r9 0x632aa20c 1663738380
您可以使用gdb的命令。但您确实需要手动添加所有寄存器
display $r0
display $r1
...
您可以使用gdb启动脚本(-x参数)保存一些键入