最終更新日時(UTC):
が更新

履歴 編集

<debugging>

debugging(C++26)

<debugging>ヘッダでは、プログラムのデバッグ実行をサポートする機能を提供する。

名前 説明 対応バージョン
breakpoint ブレークポイントを設置する (functional) C++26
breakpoint_if_debugging デバッガ実行時のみブレークポイントを設置する (functional) C++26
is_debugger_present デバッガ実行中か判定する (functional) C++26

この機能が必要になった背景・経緯

開発プラットフォームによってデバッガやブレークポイントの機能は提供されているが、本ライブラリのようにプログラム中に明示的にブレークポイントを設置し、プログラムとデバッガを対話させることでデバッグ体験が向上することがある。

実装経験としては以下のようなものがあり、これらをこのライブラリで標準化した:

開発環境 機能
Microsoft C/C++ Optimizing Compiler __debugbreak()関数 (無条件ブレークポイント)
Win32 API IsDebuggerPresent()関数 (デバッガ実行中か判定)
LLVM Clang __builtin_debugtrap()組み込み関数 (無条件ブレークポイント)
arm Keil, ARM Compiler __breakpoint()関数 (無条件ブレークポイント)
Portable Snippetsライブラリ psnip_trap()関数 (無条件ブレークポイント)
Debug Breakライブラリ debug_break()関数 (無条件ブレークポイント)
Boost.Testライブラリ debugger_break()関数 (無条件ブレークポイント)
under_debugger()関数 (デバッガ実行中か判定)
EASTLライブラリ EASTL_DEBUG_BREAK()マクロ (無条件ブレークポイント)
Catch2ライブラリ CATCH_TRAPマクロ (無条件ブレークポイント)
CATCH_BREAK_INTO_DEBUGGERマクロ (条件付きブレークポイント)
isDebuggerActive()関数 (デバッガ実行中か判定)
JUCEライブラリ JUCE_BREAK_IN_DEBUGGERマクロ (無条件ブレークポイント)
juce_isRunningUnderDebugger()関数、Process::isRunningUnderDebugger()関数 (デバッガ実行中か判定)
ImGuiライブラリ IM_DEBUG_BREAK()マクロ (無条件ブレークポイント)
AWS C SDK aws_debug_break()関数 (条件付きブレークポイント)
aws_is_debugger_present()関数 (デバッガ実行中か判定)
UnrealEngine UE_DEBUG_BREAKマクロ (条件付きブレークポイント)
IsDebuggerPresent()関数 (デバッガ実行中か判定)

バージョン

言語

  • C++26

参照