Rumah Operasi dan penyelenggaraan operasi dan penyelenggaraan linux Kaedah konfigurasi biasa untuk menggunakan GDB untuk nyahpepijat program ARM terbenam di bawah Linux

Kaedah konfigurasi biasa untuk menggunakan GDB untuk nyahpepijat program ARM terbenam di bawah Linux

Jul 05, 2023 am 08:10 AM
linux arm gdb

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

Sistem terbenam, sebagai sistem komputer khas, biasanya disepadukan dalam peranti elektronik dan digunakan untuk mengawal dan mengurus sumber perkakasan. Untuk menyahpepijat dan menganalisis operasi sistem terbenam, kita perlu menggunakan alat khusus. Antaranya, GDB ialah penyahpepijat sumber terbuka yang biasa digunakan yang boleh berjalan pada sistem terbenam dan berkomunikasi dengan program. Artikel ini akan memperkenalkan kaedah konfigurasi biasa untuk menggunakan GDB untuk menyahpepijat program ARM terbenam di bawah Linux dan memberikan contoh kod.

  1. Pasang perisian dan alatan yang diperlukan

Sebelum kita mula, kita perlu memasang beberapa perisian dan alatan yang diperlukan. Mula-mula, pastikan rantai alat GCC telah dipasang dalam sistem Linux untuk menyusun atur cara ARM. Seterusnya, pasang penyahpepijat GDB menggunakan arahan berikut:

sudo apt-get install gdb-multiarch
Salin selepas log masuk
  1. Kompilasi program ARM terbenam

Sebelum penyahpepijatan, kita perlu menyusun atur cara ARM terbenam yang mudah. Berikut ialah contoh program mudah untuk mengira jumlah dua nombor:

#include <stdio.h>

int main() {
    int a = 5;
    int b = 10;
    int sum = a + b;
    printf("Sum: %d
", sum);
    return 0;
}
Salin selepas log masuk

Simpan kod di atas sebagai fail sum.c. sum.c文件。

使用以下命令编译该程序:

arm-linux-gnueabi-gcc -o sum sum.c
Salin selepas log masuk

编译完成后,将在当前目录下生成一个名为sum的可执行文件。

  1. 连接嵌入式ARM设备

将嵌入式ARM设备连接到Linux主机。使用USB线缆连接两者,并确保设备处于调试模式下。

  1. 启动GDB调试器

在Linux主机上启动GDB调试器,并使用以下命令打开可执行文件:

gdb-multiarch sum
Salin selepas log masuk

此时,GDB会显示一个命令行界面,等待输入调试指令。

  1. 配置GDB连接

在GDB命令行界面中,输入以下命令配置GDB连接到嵌入式ARM设备:

target remote :8888
Salin selepas log masuk

这里的8888是设备上的GDB服务器监听端口号。请注意,具体的端口号可能因设备而异,需要根据实际情况进行调整。

  1. 设置断点

在GDB命令行界面中,输入以下命令设置断点:

break main
Salin selepas log masuk

这将在程序的main函数中设置一个断点,以便在程序执行到该函数时暂停。

  1. 开始调试

输入以下命令开始调试:

continue
Salin selepas log masuk

这将使程序开始执行,并在遇到断点时停止。

  1. 调试过程

在程序停止执行时,我们可以使用以下命令进行调试:

  • next:执行下一行代码
  • step:进入函数内部
  • list:显示源代码
  • print:打印变量值
  • watch:监视变量值变化
  • continue:继续程序执行
  • quit
  • Gunakan arahan berikut untuk menyusun atur cara:
quit
Salin selepas log masuk

Selepas penyusunan selesai, fail boleh laku bernama sum akan dijana dalam direktori semasa.

      Sambungkan peranti ARM terbenam
    Sambungkan peranti ARM terbenam kepada hos Linux. Sambungkan kedua-duanya menggunakan kabel USB dan pastikan peranti berada dalam mod nyahpepijat.

      Mulakan penyahpepijat GDB

      🎜Mulakan penyahpepijat GDB pada hos Linux dan buka fail boleh laku menggunakan arahan berikut: 🎜rrreee🎜Pada ketika ini, GDB akan memaparkan antara muka baris arahan, tunggu Masukkan arahan penyahpepijatan. 🎜
        🎜Konfigurasikan sambungan GDB🎜🎜🎜Dalam antara muka baris arahan GDB, masukkan arahan berikut untuk mengkonfigurasi GDB untuk menyambung ke peranti ARM terbenam: 🎜rrreee🎜Di sini 8888 ialah peranti Nombor port mendengar pelayan GDB dihidupkan. Sila ambil perhatian bahawa nombor port tertentu mungkin berbeza dari peranti ke peranti dan perlu dilaraskan mengikut keadaan sebenar. 🎜
          🎜Tetapkan titik putus🎜🎜🎜Dalam antara muka baris arahan GDB, masukkan arahan berikut untuk menetapkan titik putus: 🎜rrreee🎜Ini akan menetapkan titik putus dalam utamaprogram > fungsi Breakpoint untuk menjeda pelaksanaan program apabila ia mencapai fungsi ini. 🎜
            🎜Mulakan nyahpepijat🎜🎜🎜Masukkan arahan berikut untuk mula menyahpepijat: 🎜rrreee🎜Ini akan menyebabkan atur cara mula melaksanakan dan berhenti apabila ia mencapai titik putus. 🎜
              🎜Proses penyahpepijatan🎜🎜🎜Apabila program berhenti melaksanakan, kita boleh menggunakan arahan berikut untuk nyahpepijat: 🎜
            🎜seterusnya: Jalankan baris kod seterusnya 🎜🎜langkah: Masuk ke dalam fungsi🎜🎜senarai: Paparkan kod sumber🎜🎜cetak: Cetak nilai berubah🎜🎜 tonton: Pantau perubahan nilai berubah🎜🎜teruskan: teruskan pelaksanaan program🎜🎜henti: keluar dari penyahpepijat GDB🎜🎜🎜dan seterusnya. 🎜🎜🎜Tamatkan penyahpepijatan🎜🎜🎜Apabila penyahpepijatan selesai, anda boleh memasukkan arahan berikut untuk keluar dari penyahpepijat GDB: 🎜rrreee🎜Artikel ini memperkenalkan kaedah konfigurasi biasa menggunakan GDB untuk menyahpepijat program ARM terbenam di bawah Linux dan menyediakan kod mudah contoh . Saya berharap melalui pengenalan artikel ini, pembaca dapat memahami cara menggunakan GDB untuk menyahpepijat program ARM terbenam dalam persekitaran Linux untuk menganalisis dan menyahpepijat status berjalan sistem terbenam dengan lebih baik. 🎜

Atas ialah kandungan terperinci Kaedah konfigurasi biasa untuk menggunakan GDB untuk nyahpepijat program ARM terbenam di bawah Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Tidak dapat log masuk ke mysql sebagai akar Tidak dapat log masuk ke mysql sebagai akar Apr 08, 2025 pm 04:54 PM

Sebab utama mengapa anda tidak boleh log masuk ke MySQL sebagai akar adalah masalah kebenaran, ralat fail konfigurasi, kata laluan tidak konsisten, masalah fail soket, atau pemintasan firewall. Penyelesaiannya termasuk: periksa sama ada parameter pengikat di dalam fail konfigurasi dikonfigurasi dengan betul. Semak sama ada kebenaran pengguna root telah diubahsuai atau dipadam dan ditetapkan semula. Sahkan bahawa kata laluan adalah tepat, termasuk kes dan aksara khas. Semak tetapan dan laluan kebenaran fail soket. Semak bahawa firewall menyekat sambungan ke pelayan MySQL.

C Language Compilation Compilation: Panduan terperinci untuk pemula ke aplikasi praktikal C Language Compilation Compilation: Panduan terperinci untuk pemula ke aplikasi praktikal Apr 04, 2025 am 10:48 AM

C Language Conditional Compilation adalah mekanisme untuk selektif menyusun blok kod berdasarkan keadaan kompilasi masa. Kaedah pengenalan termasuk: menggunakan arahan #if dan #Else untuk memilih blok kod berdasarkan syarat. Ekspresi bersyarat yang biasa digunakan termasuk STDC, _WIN32 dan LINUX. Kes praktikal: Cetak mesej yang berbeza mengikut sistem operasi. Gunakan jenis data yang berbeza mengikut bilangan digit sistem. Fail header yang berbeza disokong mengikut pengkompil. Penyusunan bersyarat meningkatkan kebolehgunaan dan fleksibiliti kod, menjadikannya boleh disesuaikan dengan pengkompil, sistem operasi, dan perubahan seni bina CPU.

【Rust Sendiri belajar】 Pengenalan 【Rust Sendiri belajar】 Pengenalan Apr 04, 2025 am 08:03 AM

1.0.1 Preface Projek ini (termasuk kod dan komen) telah direkodkan semasa karat saya yang diajar sendiri. Mungkin ada kenyataan yang tidak tepat atau tidak jelas, sila minta maaf. Jika anda mendapat manfaat daripadanya, ia lebih baik. 1.0.2 Mengapa Rustrust boleh dipercayai dan cekap? Karat boleh menggantikan C dan C, dengan prestasi yang sama tetapi keselamatan yang lebih tinggi, dan tidak memerlukan rekompilasi yang kerap untuk memeriksa kesilapan seperti C dan C. Kelebihan utama termasuk: Keselamatan Memori (mencegah penunjuk null dari dereferences, penunjuk menggantung, dan perbalahan data). Thread-safe (pastikan kod multi-threaded selamat sebelum pelaksanaan). Elakkan tingkah laku yang tidak ditentukan (mis., Arus dari batas, pembolehubah yang tidak diinisialisasi, atau akses kepada memori yang dibebaskan). Karat menyediakan ciri bahasa moden seperti generik

Apakah 5 komponen asas Linux? Apakah 5 komponen asas Linux? Apr 06, 2025 am 12:05 AM

Lima komponen asas Linux adalah: 1. Kernel, menguruskan sumber perkakasan; 2. Perpustakaan sistem, menyediakan fungsi dan perkhidmatan; 3. Shell, antara muka pengguna untuk berinteraksi dengan sistem; 4. Sistem fail, menyimpan dan menganjurkan data; 5. Aplikasi, menggunakan sumber sistem untuk melaksanakan fungsi.

Cara menyelesaikan MySQL tidak dapat dimulakan Cara menyelesaikan MySQL tidak dapat dimulakan Apr 08, 2025 pm 02:21 PM

Terdapat banyak sebab mengapa permulaan MySQL gagal, dan ia boleh didiagnosis dengan memeriksa log ralat. Penyebab umum termasuk konflik pelabuhan (periksa penghunian pelabuhan dan ubah suai konfigurasi), isu kebenaran (periksa keizinan pengguna yang menjalankan perkhidmatan), ralat fail konfigurasi (periksa tetapan parameter), rasuah direktori data (memulihkan data atau membina semula ruang meja), isu ruang jadual InnoDB (semak fail ibdata1) Apabila menyelesaikan masalah, anda harus menganalisisnya berdasarkan log ralat, cari punca utama masalah, dan mengembangkan tabiat sandaran data secara teratur untuk mencegah dan menyelesaikan masalah.

Di manakah perpustakaan fungsi bahasa C? Bagaimana untuk menambah perpustakaan fungsi bahasa C? Di manakah perpustakaan fungsi bahasa C? Bagaimana untuk menambah perpustakaan fungsi bahasa C? Apr 03, 2025 pm 11:39 PM

Perpustakaan Fungsi Bahasa C adalah kotak alat yang mengandungi pelbagai fungsi, yang dianjurkan dalam fail perpustakaan yang berbeza. Menambah perpustakaan memerlukan menyatakannya melalui pilihan baris perintah pengkompil, contohnya, pengkompil GCC menggunakan pilihan -L diikuti dengan singkatan nama perpustakaan. Jika fail perpustakaan tidak berada di bawah laluan carian lalai, anda perlu menggunakan pilihan -L untuk menentukan laluan fail perpustakaan. Perpustakaan boleh dibahagikan kepada perpustakaan statik dan perpustakaan dinamik. Perpustakaan statik secara langsung dikaitkan dengan program pada masa kompilasi, manakala perpustakaan dinamik dimuatkan semasa runtime.

Bolehkah mysql berjalan di Android Bolehkah mysql berjalan di Android Apr 08, 2025 pm 05:03 PM

MySQL tidak boleh berjalan secara langsung di Android, tetapi ia boleh dilaksanakan secara tidak langsung dengan menggunakan kaedah berikut: menggunakan pangkalan data ringan SQLite, yang dibina di atas sistem Android, tidak memerlukan pelayan yang berasingan, dan mempunyai penggunaan sumber kecil, yang sangat sesuai untuk aplikasi peranti mudah alih. Sambungkan jauh ke pelayan MySQL dan sambungkan ke pangkalan data MySQL pada pelayan jauh melalui rangkaian untuk membaca dan menulis data, tetapi terdapat kelemahan seperti kebergantungan rangkaian yang kuat, isu keselamatan dan kos pelayan.

Penyelesaian kepada kesilapan yang dilaporkan oleh MySQL pada versi sistem tertentu Penyelesaian kepada kesilapan yang dilaporkan oleh MySQL pada versi sistem tertentu Apr 08, 2025 am 11:54 AM

Penyelesaian kepada ralat pemasangan MySQL adalah: 1. Berhati -hati memeriksa persekitaran sistem untuk memastikan keperluan perpustakaan ketergantungan MySQL dipenuhi. Sistem operasi dan keperluan versi yang berbeza adalah berbeza; 2. Berhati -hati membaca mesej ralat dan mengambil langkah -langkah yang sepadan mengikut arahan (seperti fail perpustakaan yang hilang atau kebenaran yang tidak mencukupi), seperti memasang kebergantungan atau menggunakan arahan sudo; 3 Jika perlu, cuba pasang kod sumber dan periksa dengan teliti log kompilasi, tetapi ini memerlukan pengetahuan dan pengalaman Linux tertentu. Kunci untuk menyelesaikan masalah akhirnya adalah dengan teliti memeriksa persekitaran sistem dan maklumat ralat, dan merujuk kepada dokumen rasmi.

See all articles