名稱空間
變體
操作

std::breakpoint

來自 cppreference.com
< cpp‎ | 工具
定義於標頭檔案 <debugging>
void breakpoint() noexcept;
(C++26 起)

無條件斷點:嘗試暫時停止程式執行並將控制權傳遞給偵錯程式,無論是否能檢測到偵錯程式存在。此函式的行為是實現定義的。

目錄

[編輯] 注意

此函式的目的是允許在執行時控制斷點,超越偵錯程式可能提供的功能,同時不導致程式退出。例如,在檢測到不常見的非關鍵條件時中斷,允許透過複雜的執行時敏感條件進行程式控制,在使用者輸入時中斷以檢查互動式程式中的上下文,而無需切換到偵錯程式應用程式等。

此函式標準化了許多現有類似設施:LLVM 的 __builtin_debugtrap、Win32 API 的 __debugbreakboost.testdebugger_breakassert(false)、x86 目標的 _asm { int 3 } (MSVC) 和 asm("int3") (GCC/clang) 等。

特性測試 標準 特性
__cpp_lib_debugging 202311L (C++26) 除錯支援庫
202403L (C++26) 可替換的 std::is_debugger_present

[編輯] 示例

[編輯] 另請參見

檢查程式是否在偵錯程式控制下執行
(函式) [編輯]
如果 std::is_debugger_present 返回 true,則呼叫 std::breakpoint
(函式) [編輯]

[編輯] 外部連結

1.  armKEIL: __breakpoint 內建函式
2.  Portable Snippets: 除錯斷言和陷阱
3.  EASTL: EASTL_DEBUG_BREAK
4.  Catch2: CATCH_TRAPCATCH_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