Debugging

Debugging este procesul de identificare și corectare a erorilor. Există mai multe tehnici.

Print debugging

// Adaugă afișări temporare pentru a urmări valorile
for (int i = 0; i < n; i++) {
  cerr << "i=" << i << " v[i]=" << v[i] << endl;  // cerr nu e buffered
  // ... logica ...
}

Assertions

#include <cassert>
assert(n > 0);      // oprește programul dacă condiția e falsă
assert(ptr != nullptr);

Compilare cu sanitizatori

Terminal
g++ -g -fsanitize=address,undefined prog.cpp -o prog
./prog
# Detectează: buffer overflow, use-after-free, UB etc.
La olimpiadă: compilează cu -Wall -Wextra pentru avertismente maxime. Rezolvă toate warning-urile — adesea ascund bug-uri reale.