Cara memasang GDB dalam RHEL 8

Cara memasang GDB dalam RHEL 8

GDB atau GNU Project Debugger adalah alat yang hebat apabila anda perlu debug program. Anda boleh menetapkan titik putus, menonton perubahan nilai pembolehubah, atau bahkan menukar nilai untuk program semasa ia dihentikan pada titik keadaannya, kemudian teruskan, hanya untuk memilih beberapa ciri GDB.

Dalam tutorial ini, kami akan memasang GDB di RHEL 8, dan menguji bagaimana ia berfungsi dengan aplikasi C yang mudah.

Dalam tutorial ini anda akan belajar:

  • Cara memasang gdb
  • Cara Menyusun Aplikasi C Ringkas Dengan Simbol Debug
  • Cara menetapkan titik putus dalam aplikasi berjalan dengan GDB
  • Cara mencetak nilai sebenar pembolehubah yang diberikan dalam aplikasi
Melangkah melalui gelung dengan gdb.

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Red Hat Enterprise Linux 8
Perisian GDB 8.2
Yang lain Akses istimewa ke sistem linux anda sebagai akar atau melalui sudo perintah.
Konvensyen # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Cara Memasang GDB di Redhat Linux 8 Langkah demi Langkah Arahan



Untuk tutorial ini, kami akan menggunakan aplikasi C yang mudah yang menetapkan beberapa pembolehubah, mencetak beberapa teks, dan menukar nilai pembolehubah itu kemudian. Ia dibina hanya untuk menunjukkan beberapa ciri GDB, dan tidak mempunyai penggunaan dunia sebenar.

Sekiranya anda tidak biasa dengan bahasa pengaturcaraan C, anda boleh menyemak perkembangan C pada Pengenalan Linux untuk memulakan anda. Buat masa ini mempertimbangkan kod sumber berikut, bahawa kami akan dimasukkan ke dalam vars.c fail teks:

#include int main () int i = 1; int j = 10; printf ("pembolehubah set \ n)"; i ++; J = 20; printf ("Nilai berubah -ubah diubah suai \ n"); kembali 0; 
Salinan

Kami akan menggunakan program mudah ini untuk diuji GDB. Anda mungkin perasan dari kod bahawa pemboleh ubah nilai i dan j ambil tidak akan pernah didedahkan di bawah program normal, jadi kami tidak akan tahu apa nilai mereka di mana, dan bila. Dalam kes ini, ia adalah pembaziran memori yang mudah, tetapi fikirkan tentang kes penggunaan di mana i akan memegang sesuatu yang penting, mungkin kata laluan yang dikodkan keras, kod cheat atau harta karun lain (atau hanya tidak dapat mencari di mana pengiraan program anda salah).

  1. GDB adalah sebahagian daripada Alat pembangunan kumpulan pakej, jadi jika anda memasang alat pembangunan, anda sudah mempunyai GDB. Jika tidak, anda boleh memasangnya dengan sendirinya:
    # DNF Pasang GDB

    Kami juga memerlukan DebugInfo untuk GLIBC untuk ujian kami:

    # DNF Debuginfo-memasang GLIBC-2.28-18.EL8.x86_64


  2. Kami mendapat alat debugger, dan kami mendapat kod sumber. Untuk debugging berguna, kita perlu menyusun program kami dengan simbol debug (kami menambah -g pilihan):
    $ gcc -g -o var vars.c

    Sekiranya kita menjalankan kita vars program, ia akan mengeluarkan rentetan di printf garis, tetapi tidak akan menyebut i dan j, seperti yang diharapkan.

    $ ./VARS VARSED TETAP
  3. Kita perlu mengetahui nilai -nilai i dan j Apabila mereka di mana ditetapkan pertama, dan sebelum program keluar. Pertimbangkan garis #7 dan #10 (The printf garis) di sumber. Ia akan menjadi ideal jika kita dapat menghentikan pelaksanaan pada baris tersebut, dapatkan nilai -nilai, maka biarkan program itu longgar lagi, dll. Kami akan melakukan ini untuk menguji GDB. Kami memulakannya dengan disusun vars boleh dilaksanakan sebagai hujah:
    $ gdb vars gnu gdb (gdb) red hat perusahaan linux 8.2-3.EL8 Hak Cipta (c) 2018 Yayasan Perisian Percuma, INC. Lesen GPLV3+: GNU GPL Versi 3 atau lebih baru ini adalah perisian percuma: anda bebas menukar dan mengagihkan semula. Tidak ada jaminan, setakat yang dibenarkan oleh undang -undang. Taip "Tunjukkan Penyalinan" dan "Tunjukkan Waranti" untuk maklumat lanjut. GDB ini dikonfigurasikan sebagai "x86_64-redhat-linux-gnu". Taipkan "Tunjukkan Konfigurasi" untuk perincian konfigurasi. Untuk arahan pelaporan pepijat, sila lihat: . Cari manual GDB dan sumber dokumentasi lain dalam talian di: . Untuk bantuan, taipkan "Bantuan". Taipkan "perkataan apropos" untuk mencari arahan yang berkaitan dengan "perkataan" ... simbol membaca dari var ... selesai. (GDB)

    GDB Membaca simbol dalam program ini, dan memberi kita petugas untuk bertindak. The vars program tidak bermula pada ketika ini. Kami periksa nota kami, dan tetapkan a titik putus di baris #7:

    (GDB) Break 7 Breakpoint 1 di 0x40059c: Fail Vars.c, baris 7.

    Dan baris #10:

    (GDB) rehat 10 Breakpoint 2 di 0x4005B1: Fail Vars.c, baris 10.

    Dengan titik putus, kami memulakan pelaksanaan:

    (GDB) Jalankan Program Permulaan:/TMP/DEVEL/VARS Breakpoint 1, Utama () di VARS.c: 7 7 printf ("pembolehubah set \ n");

    Pelaksanaan berhenti di titik putus pertama, dan kita boleh mencetak nilai pembolehubah tersembunyi:

    (GDB) Cetak i $ 1 = 1 (GDB) cetak j $ 2 = 10

    Kami mendapat bahagian pertama maklumat yang diperlukan, mari meneruskan pelaksanaan:

    (GDB) Teruskan Berterusan. Pemboleh ubah menetapkan Breakpoint 2, Utama () di VARS.c: 10 10 printf ("Nilai berubah -ubah diubah suai \ n");

    Kita boleh mencetak nilai dengan cara yang sama pada titik putus seterusnya:

    (GDB) Cetak I $ 3 = 2 (GDB) Cetak J $ 4 = 20

    Kami mendapat semua yang kami perlukan. Tidak ada lagi titik putus yang tersisa, jadi aplikasi akan keluar secara normal setelah mencetak baris terakhir teks.

    (GDB) Teruskan meneruskan. Nilai berubah -ubah diubah suai [inferior 1 (proses 2330) keluar secara normal] (gdb) q

    Kami mendapat nilai pembolehubah rahsia, dan menguji bahawa kami GDB sama berguna seperti yang dimaksudkan.

Tutorial Linux Berkaitan:

  • Tutorial Debugging GDB untuk Pemula
  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Perkara yang perlu dipasang di Ubuntu 22.04
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Perkara yang perlu dilakukan setelah memasang Ubuntu 22.04 Jur -ubur Jammy ..
  • Pasang Arch Linux di Workstation VMware
  • Ubuntu 20.04 Panduan
  • Cara Dual Boot Kali Linux dan Windows 10
  • Sistem Hung Linux? Cara melarikan diri ke baris arahan dan ..
  • Cara Menggunakan Adb Android Debug Bridge untuk Mengurus Android Anda ..