Kode yang berjalan belum tentu benar. Section ini memperkenalkan debugger, sanitizer, static analysis, clang-format dan clang-tidy, hingga unit dan integration testing untuk menemukan cacat sejak dini dan menjaga kualitas kode.
Mengapa debugger lebih unggul daripada printf debugging, dan panduan dasar gdb: run, break, next, step, print, serta backtrace.
Buka → # Breakpoints dan WatchpointsPenempatan breakpoint yang cerdas, breakpoint bersyarat, dan watchpoint untuk melacak siapa yang mengubah sebuah variabel.
Buka → # Membaca Stack TraceMembedah stack trace dari gdb, laporan crash Linux, exception, dan std::stacktrace C++23 untuk menemukan lokasi bug.
Buka → # Compiler WarningsMembaca peringatan compiler dengan -Wall -Wextra -Wpedantic, memilah yang berbahaya dari yang minor, dan menegakkannya dengan -Werror.
Buka → # Keluarga SanitizerCara kerja AddressSanitizer, UndefinedBehaviorSanitizer, ThreadSanitizer, dan LeakSanitizer: instrumentasi, overhead, dan kapan dipakai.
Buka → # AddressSanitizerMendeteksi heap-buffer-overflow, use-after-free, dan double-free dengan -fsanitize=address, plus cara membaca laporannya secara sistematis.
Buka → # UndefinedBehaviorSanitizerMendeteksi signed overflow, shift di luar rentang, dan pointer tak sejajar dengan -fsanitize=undefined, serta cara mengubahnya menjadi error nyata.
Buka → # ThreadSanitizerMendeteksi data race antar thread dengan -fsanitize=thread: membaca laporannya, memahami prinsip kerjanya, dan memperbaikinya dengan atomic.
Buka → # Fuzzing dengan libFuzzerKenali fuzzing berumpan-balik cakupan: konsep corpus dan mutasi, fuzz target libFuzzer, kombinasi dengan AddressSanitizer, hingga membedah input yang memicu crash.
Buka → # Static AnalysisAnalisis statis dengan g++ -fanalyzer: menemukan bug tanpa menjalankan program, dipadu cppcheck dan posisinya terhadap sanitizer.
Buka → # Formatting dengan clang-formatMengapa format konsisten penting, cara kerja berkas .clang-format, style bawaan seperti Google dan LLVM, serta integrasi editor dengan format-on-save.
Buka → # Linting dengan clang-tidyCara kerja clang-tidy: kategori check bugprone, performance, modernize, dan readability; membaca laporan, mengonfigurasi .clang-tidy, dan mengintegrasikannya ke CI.
Buka → # Unit TestingKonsep unit testing, pola Arrange-Act-Assert, sketsa GoogleTest dan Catch2, serta mini test harness sendiri dengan macro CHECK yang benar-benar kita jalankan.
Buka → # Testing dengan GoogleTestNaik kelas dari mini harness buatan sendiri ke framework standar industri: makro TEST dan TEST_F, keluarga EXPECT dan ASSERT, matcher, filter binary uji, hingga integrasi CMake/CTest — semua dijalankan dengan GoogleTest 1.14 sungguhan.
Buka → # Integration TestingPerbedaan unit test dan integration test, konsep fixture setup-teardown, dan mini integration test tulis-baca berkas yang benar-benar kita jalankan, plus pola job CI.
Buka → # Debugging Memory ErrorsKatalog lima error memori klasik C++ beserta alat deteksinya, laporan LeakSanitizer, pencegahan dengan RAII, dan checklist penutup section debugging.
Buka →