Menggunakan gdb dan lldb
Telusuri program langkah demi langkah
Menggunakan gdb dan lldb adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Alat Debug Interaktif
gdb (GNU) dan lldb (LLVM) memungkinkan Anda menghentikan sementara program yang sedang berjalan, memeriksa variabel, dan menelusuri kode baris demi baris. Perintah keduanya serupa.
Kompilasi dengan Informasi Debug
Selalu kompilasikan dengan -g (dan idealnya -O0) agar alat debug dapat memetakan kode mesin kembali ke kode sumber Anda.
g++ -g -O0 main.cpp -o app
# then
gdb ./appMenetapkan Titik Henti
Titik henti menjeda eksekusi di lokasi yang dipilih.
- gdb:
break main.cpp:10ataubreak myFunc - lldb:
breakpoint set --file main.cpp --line 10ataub myFunc
Menjalankan Program
Mulai eksekusi dengan run (atau r). Program berhenti di titik henti pertama yang ditemuinya dan siap diperiksa.
Menelusuri Kode Langkah demi Langkah
Perintah inti untuk menelusuri kode (namanya sama dalam gdb dan lldb):
next/n: menjalankan satu baris dan melewati pemanggilanstep/s: masuk ke dalam pemanggilanfinish: menjalankan program hingga fungsi saat ini mengembalikan nilaicontinue/c: melanjutkan hingga titik henti berikutnya
Memeriksa Variabel
Cetak nilai untuk memahami keadaan program.
- gdb:
print x,print arr[2] - lldb:
frame variableataup x
Target Sesi Contoh
Perhatikan program ini; Anda mungkin menetapkan titik henti pada perulangan dan mencetak sum di setiap iterasi.
#include <iostream>
int main() {
int sum = 0;
for (int i = 1; i <= 3; ++i) {
sum += i;
}
std::cout << sum << "\n";
return 0;
}Tumpukan Pemanggilan
Saat program berhenti, backtrace (gdb) atau bt (lldb) menampilkan rangkaian pemanggilan fungsi. Gunakan frame N untuk beralih ke pemanggil dan memeriksa variabel lokalnya.
Titik Pantau
Titik pantau menghentikan program ketika suatu variabel berubah, sehingga membantu menemukan tempat terjadinya perubahan yang tidak terduga.
- gdb:
watch counter - lldb:
watchpoint set variable counter
Titik Henti Bersyarat
Berhenti hanya ketika suatu kondisi terpenuhi, sehingga Anda tidak perlu menelusuri program secara manual.
- gdb:
break loop.cpp:5 if i == 99 - lldb:
breakpoint set --line 5 --condition "i == 99"
Menelusuri Kerusakan Program
Jalankan program yang mengalami kerusakan di bawah alat debug; saat terjadi kesalahan segmentasi, program berhenti di baris yang menyebabkan kesalahan. Kemudian gunakan bt untuk melihat bagaimana program sampai ke sana. Anda juga dapat menganalisis dump inti setelah kejadian.
Pemeriksaan Cepat
Ingat kembali perintah untuk menelusuri kode langkah demi langkah.
Rangkuman
Anda telah mempelajari penelusuran kesalahan interaktif.
- Kompilasikan dengan
-g -O0 - Tetapkan titik henti, gunakan
run, lalunext/step/finish - Periksa dengan
print/frame variabledanbacktrace - Titik pantau dan titik henti bersyarat membantu menemukan kesalahan yang sulit dilacak
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menggunakan gdb dan lldb” gratis?
Ya — teks lengkap “Menggunakan gdb dan lldb” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menggunakan gdb dan lldb”?
Telusuri program langkah demi langkah Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Menggunakan gdb dan lldb” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Menggunakan gdb dan lldb
- AddressSanitizer
- UBSan dan TSan
- Dasar-Dasar Valgrind