Rumah > Operasi dan penyelenggaraan > operasi dan penyelenggaraan linux > 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

王林
Lepaskan: 2023-07-04 23:15:08
asal
1955 orang telah melayarinya

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
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 段中使用 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
Salin selepas log masuk

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

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

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

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

其中,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
      Salin selepas log masuk
    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
        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:
        1. (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.

        2. Menyahpepijat pemasang

          Kini, kita boleh mula menyahpepijat pemasang. Berikut ialah beberapa contoh arahan penyahpepijatan GDB yang biasa digunakan:

        3. Lihat nilai daftar:
        4. (gdb) continue
          Salin selepas log masuk
        5. Masuk ke dalam atur cara:
        6. (gdb) x/16x $sp
          Salin selepas log masuk
        7. Lengkapkan baki fungsi rehat
        8. Selesaikan baki fungsi semasa:reee

          Klik:
        9. (gdb) print $r0
          Salin selepas log masuk
      1. Teruskan laksanakan program:
        (gdb) list
        Salin selepas log masuk

      Lihat kandungan memori:

      (gdb) quit
      Salin selepas log masuk

      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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan