我正在尝试使用GNU汇编程序学习ARM汇编程序编程.我用QEmu设置了我的PC,并拥有Debian ARM-HF chroot环境.
如果我汇编并链接我的测试程序:
.text
.global _start
_start:
mov r0,#6
bx lr
有:
as test.s -o test.o
ld test.o -o test
然后将文件加载到gdb并在_start上设置断点:
root@Latitude-E6420:/root# gdb test
GNU gdb (GDB) 7.6.1 (Debian 7.6.1-1)
Copyright (C) 2013 Free Software Foundation,Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY,to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabihf".
For bug reporting instructions,please see:
...
Reading symbols from /root/test...(no debugging symbols found)...done.
(gdb) break _start
Breakpoint 1 at 0x8054
(gdb)
如何单步执行代码,显示汇编程序源代码并监视寄存器?
我尝试了一些基本的命令,但它们不起作用:
(gdb) break _start
Breakpoint 1 at 0x8054
(gdb) info regi
The program has no registers now.
(gdb) stepi
The program is not being run.
(gdb) disas
No frame selected.
(gdb) r
Starting program: /root/test
qemu: Unsupported syscall: 26
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
qemu: Unsupported syscall: 26
During startup program terminated with signal SIGSEGV,Segmentation fault.
(gdb)