Debugger Loop

디버거는 실행을 멈추고 상태를 직접 확인하게 합니다

std::cout 출력보다 브레이크포인트, 변수 창, 호출 스택이 복잡한 흐름을 빠르게 좁혀 줍니다.

디버그 빌드-g -O0 또는 /Zi /Od처럼 심볼을 포함하고 최적화를 낮춥니다.
도구GDB, LLDB, Visual Studio Debugger, IDE 통합 디버거가 같은 기본 개념을 공유합니다.
breakpoint

의심 지점에서 실행을 멈춥니다

조건부 브레이크포인트는 특정 값이나 반복 횟수에서만 중지하게 합니다.

step

한 줄씩 흐름을 따라갑니다

Step Into, Step Over, Step Out으로 함수 내부 진입 여부를 선택합니다.

watch

변수와 표현식을 계속 봅니다

조사식 창은 루프마다 값이 어떻게 바뀌는지 확인할 때 유용합니다.

호출 스택현재 함수가 어떤 경로로 호출되었는지 역추적해 오류의 시작점을 찾습니다.
메모리 창포인터, 배열, 원시 바이트를 확인해 손상된 주소나 범위 오류를 추적합니다.
assertassert()는 반드시 참이어야 하는 조건을 실행 중 확인하고 실패 지점에서 멈추게 합니다.

읽는 법 디버깅은 재현 가능한 지점에서 멈춘 뒤 현재 값, 다음 실행, 호출 경로를 번갈아 보며 가설을 줄이는 과정입니다.