Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan gdb untuk nyahpepijat program go di bawah Linux

Cara menggunakan gdb untuk nyahpepijat program go di bawah Linux

PHPz
PHPzasal
2023-03-31 15:37:531553semak imbas

Semasa proses pembangunan golang, kita sering menghadapi situasi di mana kita perlu nyahpepijat masalah. Pada masa ini, kami memerlukan alat untuk membantu kami dalam penyahpepijatan. Dalam golang, alat penyahpepijatan yang paling biasa digunakan ialah gdb. Artikel ini akan memperkenalkan cara memasang dan mengkonfigurasi gdb di bawah sistem pengendalian Linux.

1. Apakah itu gdb?

gdb ialah alat nyahpepijat yang boleh digunakan pada berbilang platform. Ia menyokong berbilang bahasa pengaturcaraan seperti C, C++, Fortran dan pemasangan. Selain daripada penyahpepijatan satu langkah program, ia juga menyokong pelbagai kaedah penyahpepijatan seperti melihat memori program, penyahpepijatan titik putus dan penyahpepijatan bersyarat.

2. Pasang gdb

Di bawah sistem pengendalian Linux, gdb biasanya disertakan dengannya. Anda boleh memasukkan arahan berikut pada baris arahan untuk menyemak sama ada gdb telah dipasang:

$ gdb -v

Jika gdb telah dipasang, baris arahan akan mengeluarkan maklumat versi gdb, seperti ditunjukkan di bawah:

GNU gdb (GDB) 7.11.1
...

Jika gdb tidak dipasang, anda boleh menggunakan pengurus pakej untuk memasangnya. Mengambil Ubuntu sebagai contoh, anda boleh memasukkan arahan berikut dalam terminal untuk memasang gdb:

sudo apt-get install gdb

Selepas operasi di atas, anda boleh menggunakan gdb dalam sistem.

3. Konfigurasikan gdb

Gdb menyediakan maklumat penyahpepijatan secara lalai, tetapi maklumat ini mungkin tidak mencukupi. Oleh itu, anda perlu menambah maklumat penyahpepijatan semasa menyusun atur cara golang. Apabila menyusun, anda boleh menggunakan pilihan "-gcflags" untuk meningkatkan tahap maklumat penyahpepijatan untuk pengkompil. Contohnya:

go build -o hello-world -gcflags=all="-N -l" hello-world.go

Di mana pilihan "-N" bermaksud melumpuhkan pengoptimuman supaya kami dapat mengesan program dengan lebih baik, dan pilihan "-l" bermaksud mengarahkan pengkompil untuk menjana maklumat nombor baris.

4. Gunakan gdb

Apabila menyahpepijat program golang, anda perlu menggunakan pemalam -go-delve. Pemalam ini menyediakan dua hujung belakang untuk GDB dan LLDB. GDB ialah bahagian belakang lalai bahasa Go Dalam artikel ini kami akan memperkenalkan cara menggunakan GDB untuk nyahpepijat program.

1. Hidupkan penyahpepijatan

Pertama, mulakan gdb dan muatkan program yang perlu dinyahpepijat:

$ gdb ./hello-world

Kemudian, masukkan arahan "run" di bahagian Baris arahan GDB untuk Mulakan atur cara:

(gdb) run

2. Tetapkan titik putus

Masukkan "break" pada baris di mana anda perlu menetapkan titik putus.

Contohnya, tetapkan titik putus pada baris 5 fungsi "utama":

(gdb) break main.go:5

3 Langkah tunggal

Cara biasa untuk nyahpepijat atur cara Pelaksanaan satu langkah. Dalam GDB, anda boleh menggunakan perintah "seterusnya" untuk melaksanakan pernyataan seterusnya, dan perintah "langkah" untuk memasukkan pernyataan pertama dalam subfungsi.

Sebagai contoh, untuk melangkah melalui fungsi "utama":

(gdb) next

Tekan Enter untuk melaksanakan berbilang arahan "seterusnya" berturut-turut.

4. Lihat nilai pembolehubah

Dalam GDB, anda boleh menggunakan arahan "cetak" untuk melihat nilai pembolehubah.

Sebagai contoh, lihat nilai pembolehubah "i" dalam fungsi "utama":

(gdb) print i

5 Tamatkan penyahpepijatan

Selepas penyahpepijatan selesai, anda boleh masukkan "quit " untuk keluar dari GDB:

(gdb) quit

Ringkasan

Artikel ini memperkenalkan cara memasang dan mengkonfigurasi gdb di bawah sistem pengendalian Linux dan cara menggunakan gdb untuk nyahpepijat program golang. Dalam pembangunan sebenar, gdb ialah alat penyahpepijatan yang sangat penting, yang boleh membantu kami mencari dan menyelesaikan masalah dengan lebih cepat.

Atas ialah kandungan terperinci Cara menggunakan gdb untuk nyahpepijat program go 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