AI 요약
C++26 표준에 디버깅을 위한 새로운 <debugging> 헤더가 추가된다. P2546R5와 P2810R4 제안을 통해 breakpoint(), is_debugger_present(), breakpoint_if_debugging() 세 가지 함수가 제공되며, 모두 noexcept이자 freestanding이다. 기존에 Boost.Test, Catch2, Dear ImGui, Unreal 등이 각자 구현하던 플랫폼별 디버거 감지 로직을 표준화한 것이다. is_debugger_present()는 operator new처럼 대체 가능(replaceable)하도록 설계되어 베어메탈 환경에서도 활용 가능하다.
핵심 포인트
- C++26에
<debugging>헤더 신설, P2546R5 및 P2810R4 제안 기반 - 세 함수 모두 noexcept·freestanding이며 constexpr은 아님(런타임 기능)
is_debugger_present()는 Windows의::IsDebuggerPresent(), Linux의/proc/self/statusTracerPid 등 플랫폼별로 구현breakpoint_if_debugging()은 디버거 부착 시에만 중단점을 트리거하는 편의 함수
향후 전망
- 각종 C++ 프로젝트와 테스트 프레임워크가 자체 디버그 브레이크 매크로를 표준 API로 대체할 것으로 예상
- 베어메탈·임베디드 환경에서 커스텀 구현을 통한 이식성 확보 가능
출처:hackernews
