std::breakpoint
來自 cppreference.com
定義於標頭檔案 <debugging> |
||
void breakpoint() noexcept; |
(C++26 起) | |
無條件斷點:嘗試暫時停止程式執行並將控制權傳遞給偵錯程式,無論是否能檢測到偵錯程式存在。此函式的行為是實現定義的。
目錄 |
[編輯] 注意
此函式的目的是允許在執行時控制斷點,超越偵錯程式可能提供的功能,同時不導致程式退出。例如,在檢測到不常見的非關鍵條件時中斷,允許透過複雜的執行時敏感條件進行程式控制,在使用者輸入時中斷以檢查互動式程式中的上下文,而無需切換到偵錯程式應用程式等。
此函式標準化了許多現有類似設施:LLVM 的 __builtin_debugtrap
、Win32 API 的 __debugbreak
、boost.test 的 debugger_break
、assert(false)、x86 目標的 _asm { int 3 } (MSVC) 和 asm("int3") (GCC/clang) 等。
特性測試宏 | 值 | 標準 | 特性 |
---|---|---|---|
__cpp_lib_debugging |
202311L |
(C++26) | 除錯支援庫 |
202403L |
(C++26) | 可替換的 std::is_debugger_present |
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 另請參見
(C++26) |
檢查程式是否在偵錯程式控制下執行 (函式) |
(C++26) |
如果 std::is_debugger_present 返回 true,則呼叫 std::breakpoint (函式) |
[編輯] 外部連結
1. | armKEIL: __breakpoint 內建函式 |
2. | Portable Snippets: 除錯斷言和陷阱 |
3. | EASTL: EASTL_DEBUG_BREAK |
4. | Catch2: CATCH_TRAP 和 CATCH_BREAK_INTO_DEBUGGER |
5. | Unreal Engine: DebugBreak |
6. | JUCE: JUCE_BREAK_IN_DEBUGGER |
7. | Dear ImGui: IM_DEBUG_BREAK |
8. | AWS C Common: aws_debug_break |