std::breakpoint
来自 cppreference.com
定义在头文件 <debugging> 中 |
||
void breakpoint() noexcept; |
(自 C++26 起) | |
无条件断点:尝试临时停止程序执行并将控制权传递给调试器,无论是否可以检测到调试器的存在。此函数的行为是实现定义的。
内容 |
[编辑] 注释
此函数的目的是允许对断点的运行时控制,超出调试器可能提供的范围,同时不会导致程序退出。例如,在检测到不常见且非关键的情况时中断,允许使用复杂的运行时敏感条件进行编程控制,在交互式程序中中断用户输入以检查上下文,而无需切换到调试器应用程序等。
此函数标准化了许多类似的现有工具:__builtin_debugtrap
来自 LLVM,__debugbreak
来自 Win32 API,debugger_break
来自 boost.test,assert(false),_asm { int 3 } (MSVC) 和 asm("int3") (GCC/clang) 用于 x86 目标,等等.
特性测试 宏 | 值 | Std | 特性 |
---|---|---|---|
__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. | 可移植代码片段:调试断言和陷阱 |
3. | EASTL: EASTL_DEBUG_BREAK |
4. | Catch2: CATCH_TRAP 和 CATCH_BREAK_INTO_DEBUGGER |
5. | 虚幻引擎:DebugBreak |
6. | JUCE: JUCE_BREAK_IN_DEBUGGER |
7. | Dear ImGui: IM_DEBUG_BREAK |
8. | AWS C 公共库:aws_debug_break |