linux下ARM匯編程序的調(diào)試
首先說(shuō)明需要的工具
1. QEMU
2. GDB(源代碼) 3. arm-linux交叉工具鏈 先編譯GDB,設(shè)置target為ARM平臺(tái): $ ./configure --target=arm-linux $ make OK,開始寫匯編程序,sample代碼很簡(jiǎn)單,給3個(gè)寄存器賦值,之后死循環(huán)。注意一定要死循環(huán),否則的話會(huì)遇到非法指令或者未知指令。 =======test.S======== .globl _start _start: loop: =======EOF========= 編譯: $ ./arm-linx-as -o test.o test.S 鏈接: $ ./arm-linux-ld -o test test.o 此時(shí)可以用objdump查看test的內(nèi)容: $ ./arm-linux-objdump -d test 接下來(lái)就是調(diào)試了,用qemu啟動(dòng)gdb端口監(jiān)聽: $ qemu-arm -g 11111 test 之后啟動(dòng)gdb,注意啟動(dòng)的時(shí)候要指明test,不能啟動(dòng)之后用file指定test(為什么不能不清楚,不過(guò)是試驗(yàn)結(jié)果): $ ./gdb /PATH_TO_TEST (gdb) target remote localhost:11111 (gdb) disassemble (gdb) display /10i $pc-16 (gdb) si (gdb) info register (gdb) x /16 0 差不多就知道這些了,有一個(gè)問(wèn)題是不知道如何設(shè)置指令的斷點(diǎn),以后再試吧…… 現(xiàn)在可以邊看書邊動(dòng)手嵌入式項(xiàng)目實(shí)戰(zhàn)了~ |
評(píng)論