Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Kaedah konfigurasi biasa untuk menggunakan GDB untuk menyahpepijat pemasang ARM terbenam di bawah Linux

Kaedah konfigurasi biasa untuk menggunakan GDB untuk menyahpepijat pemasang ARM terbenam di bawah Linux

王林
王林asal
2023-07-04 23:15:081885semak imbas

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.

  1. 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.
  2. 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

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 Arahan >bl melaksanakan output rentetan. Dua baris kod terakhir menggunakan perintah mov dan swi untuk keluar dari program. _start 和外部函数 printf。然后,.data 段中定义了一个字符串 message.text 段中使用 ldrbl 指令实现了字符串的输出。最后两行代码使用 movswi 指令退出程序。

  1. 使用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

其中,-mcpu=cortex-m3 指定了目标处理器的类型。

  1. 配置GDB
    接下来,我们需要配置GDB来调试编译生成的可执行文件。可以使用以下命令启动GDB:
$ gdb

然后,使用以下命令将可执行文件加载到GDB中:

(gdb) file program
  1. 配置GDB的目标设备
    我们还需要配置GDB连接到目标设备,以便进行调试。可以使用以下命令设置连接器参数:
(gdb) target remote localhost:1234

其中,localhost:1234 是目标设备的连接地址和端口号。这里假设使用了本地主机和默认端口号1234

    Kompilasi menggunakan rantai alat kompilasi silang ARM
      Gunakan 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:

    1. (gdb) info registers
    2. 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
    • Kemudian, boleh laku dimuatkan ke dalam GDB menggunakan arahan berikut:
    • (gdb) next

        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

      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
    • Masuk ke dalam atur cara:
    • (gdb) x/16x $sp
    • Lengkapkan baki fungsi rehat
    • Selesaikan baki fungsi semasa:reee

      Klik:
    • (gdb) print $r0
    1. Teruskan laksanakan program:
      (gdb) list

    Lihat kandungan memori:

    (gdb) quit

    Cetak nilai pembolehubah:
      rrreee
    🎜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!

    Kenyataan:
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn