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.

# Menggunakan Debugger

Mengapa debugger lebih unggul daripada printf debugging, dan panduan dasar gdb: run, break, next, step, print, serta backtrace.

Buka →
# Breakpoints dan Watchpoints

Penempatan breakpoint yang cerdas, breakpoint bersyarat, dan watchpoint untuk melacak siapa yang mengubah sebuah variabel.

Buka →
# Membaca Stack Trace

Membedah stack trace dari gdb, laporan crash Linux, exception, dan std::stacktrace C++23 untuk menemukan lokasi bug.

Buka →
# Compiler Warnings

Membaca peringatan compiler dengan -Wall -Wextra -Wpedantic, memilah yang berbahaya dari yang minor, dan menegakkannya dengan -Werror.

Buka →
# Keluarga Sanitizer

Cara kerja AddressSanitizer, UndefinedBehaviorSanitizer, ThreadSanitizer, dan LeakSanitizer: instrumentasi, overhead, dan kapan dipakai.

Buka →
# AddressSanitizer

Mendeteksi heap-buffer-overflow, use-after-free, dan double-free dengan -fsanitize=address, plus cara membaca laporannya secara sistematis.

Buka →
# UndefinedBehaviorSanitizer

Mendeteksi signed overflow, shift di luar rentang, dan pointer tak sejajar dengan -fsanitize=undefined, serta cara mengubahnya menjadi error nyata.

Buka →
# ThreadSanitizer

Mendeteksi data race antar thread dengan -fsanitize=thread: membaca laporannya, memahami prinsip kerjanya, dan memperbaikinya dengan atomic.

Buka →
# Fuzzing dengan libFuzzer

Kenali fuzzing berumpan-balik cakupan: konsep corpus dan mutasi, fuzz target libFuzzer, kombinasi dengan AddressSanitizer, hingga membedah input yang memicu crash.

Buka →
# Static Analysis

Analisis statis dengan g++ -fanalyzer: menemukan bug tanpa menjalankan program, dipadu cppcheck dan posisinya terhadap sanitizer.

Buka →
# Formatting dengan clang-format

Mengapa 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-tidy

Cara kerja clang-tidy: kategori check bugprone, performance, modernize, dan readability; membaca laporan, mengonfigurasi .clang-tidy, dan mengintegrasikannya ke CI.

Buka →
# Unit Testing

Konsep 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 GoogleTest

Naik 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 Testing

Perbedaan 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 Errors

Katalog lima error memori klasik C++ beserta alat deteksinya, laporan LeakSanitizer, pencegahan dengan RAII, dan checklist penutup section debugging.

Buka →