Kaedah konfigurasi biasa untuk menggunakan GDB untuk menyahpepijat pemasang ARM terbenam di bawah Linux
Abstrak:
Dalam pembangunan sistem terbenam, pemproses seni bina ARM digunakan secara meluas dalam pelbagai bidang. Untuk menyahpepijat pemasang ARM terbenam, kita boleh menggunakan GNU Debugger (GDB). Artikel ini akan memperkenalkan kaedah biasa mengkonfigurasi GDB untuk menyahpepijat pemasang ARM terbenam dalam persekitaran Linux dan memberikan contoh kod.
- Pasang rantai alat kompilasi silang GDB dan ARM
Sebelum bermula, kita perlu memasang rantai alat kompilasi silang GDB dan ARM pada sistem Linux. Ia boleh dipasang melalui pengurus pakej (seperti apt) atau dimuat turun dari tapak web rasmi.
- Menulis pemasang ARM terbenam
Pertama, kita perlu menulis pemasang ARM terbenam yang mudah untuk penyahpepijatan berikutnya. Berikut ialah contoh program:
.global _start
.extern printf
.section .data
message: .asciz "Hello, World!
"
.section .text
_start:
ldr r0, =message
bl printf
mov r7, #1
swi 0
Salin selepas log masuk
Kod di atas mentakrifkan label global _start
dan fungsi luaran printf
. Kemudian, rentetan mesej
ditakrifkan dalam bahagian .data
dan ldr
dan digunakan dalam <code>.text< Bahagian /code> Arahan >bl
melaksanakan output rentetan. Dua baris kod terakhir menggunakan perintah mov
dan swi
untuk keluar dari program. _start
和外部函数 printf
。然后,.data
段中定义了一个字符串 message
,.text
段中使用 ldr
和 bl
指令实现了字符串的输出。最后两行代码使用 mov
和 swi
指令退出程序。
- 使用ARM交叉编译工具链进行编译
使用ARM交叉编译工具链将上述汇编程序编译为可执行文件。假设交叉编译工具链的前缀为 arm-none-eabi-
,可以使用以下命令进行编译:
$ arm-none-eabi-as -mcpu=cortex-m3 -o program.o program.s
$ arm-none-eabi-ld -o program program.o
Salin selepas log masuk
其中,-mcpu=cortex-m3
指定了目标处理器的类型。
- 配置GDB
接下来,我们需要配置GDB来调试编译生成的可执行文件。可以使用以下命令启动GDB:
$ gdb
Salin selepas log masuk
然后,使用以下命令将可执行文件加载到GDB中:
(gdb) file program
Salin selepas log masuk
- 配置GDB的目标设备
我们还需要配置GDB连接到目标设备,以便进行调试。可以使用以下命令设置连接器参数:
(gdb) target remote localhost:1234
Salin selepas log masuk
其中,localhost:1234
是目标设备的连接地址和端口号。这里假设使用了本地主机和默认端口号1234
Kompilasi menggunakan rantai alat kompilasi silang ARMGunakan rantai alat kompilasi silang ARM untuk menyusun pemasang di atas ke dalam fail boleh laku. Dengan mengandaikan bahawa awalan rantai alat kompilasi silang ialah arm-none-eabi-
, anda boleh menggunakan arahan berikut untuk menyusun:
(gdb) info registers
Salin selepas log masuk
Antaranya, -mcpu=cortex- m3
ditentukan Jenis pemproses sasaran.
Konfigurasikan GDB- Seterusnya, kita perlu mengkonfigurasi GDB untuk nyahpepijat fail boleh laku yang dijana melalui kompilasi. GDB boleh dimulakan menggunakan arahan berikut:
(gdb) step
Salin selepas log masuk
Kemudian, boleh laku dimuatkan ke dalam GDB menggunakan arahan berikut: (gdb) next
Salin selepas log masuk
Konfigurasikan peranti sasaran untuk GDB
Kami juga perlu mengkonfigurasi GDB untuk menyambung ke peranti sasaran untuk nyahpepijat. Parameter penyambung boleh ditetapkan menggunakan arahan berikut:
(gdb) break main
Salin selepas log masuk
di mana, localhost:1234
ialah alamat sambungan dan nombor port peranti sasaran. Ini mengandaikan bahawa localhost dan nombor port lalai 1234
digunakan.
- Menyahpepijat pemasang
Kini, kita boleh mula menyahpepijat pemasang. Berikut ialah beberapa contoh arahan penyahpepijatan GDB yang biasa digunakan:
- Lihat nilai daftar:
(gdb) continue
Salin selepas log masuk
- Masuk ke dalam atur cara:
(gdb) x/16x $sp
Salin selepas log masuk
- Lengkapkan baki fungsi rehat
- Selesaikan baki fungsi semasa:reee Klik:
(gdb) print $r0
Salin selepas log masuk
- Teruskan laksanakan program:
(gdb) list
Salin selepas log masuk
Lihat kandungan memori:
(gdb) quit
Salin selepas log masuk
Cetak nilai pembolehubah: 🎜Tamatkan sesi penyahpepijatan 🎜Bila kami Selepas anda selesai menyahpepijat atur cara, anda boleh menggunakan arahan berikut untuk menamatkan sesi penyahpepijatan: 🎜🎜rrreee🎜Kesimpulan: 🎜Artikel ini memperkenalkan kaedah konfigurasi biasa menggunakan GDB untuk menyahpepijat pemasang ARM terbenam dalam persekitaran Linux. Mula-mula, kami memasang rantai alat kompilasi silang GDB dan ARM. Kemudian, pemasang ARM terbenam ringkas telah ditulis dan disusun menggunakan rantai alat kompilasi silang ARM. Seterusnya, kami mengkonfigurasi GDB dan disambungkan ke peranti sasaran. Akhir sekali, kami menyahpepijat pemasang menggunakan pelbagai arahan penyahpepijatan GDB. Dengan mengkonfigurasi GDB, kami boleh menyahpepijat dengan mudah pemasang ARM terbenam dan mempercepatkan kecekapan pembangunan. 🎜🎜Rujukan: 🎜🎜🎜https://sourceware.org/gdb/onlinedocs/gdb/🎜🎜https://gcc.gnu.org/onlinedocs/🎜🎜https://www.keil.com/support/ man /docs/armclang_intro/armclang_intro_dom1361289859837.htm🎜🎜Atas ialah kandungan terperinci Kaedah konfigurasi biasa untuk menggunakan GDB untuk menyahpepijat pemasang ARM terbenam di bawah Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!