命名空间
变体
操作

std::breakpoint

来自 cppreference.com
< cpp‎ | utility
 
 
实用程序库
语言支持
类型支持 (基本类型,RTTI)
库特性测试宏 (C++20)
动态内存管理
程序实用程序
协程支持 (C++20)
可变参数函数
调试支持
breakpoint
(C++26)
三方比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用实用程序
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中已弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
通用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
基本字符串转换
(C++17)
(C++17)

 
定义在头文件 <debugging>
void breakpoint() noexcept;
(自 C++26 起)

无条件断点:尝试临时停止程序执行并将控制权传递给调试器,无论是否可以检测到调试器的存在。此函数的行为是实现定义的。

内容

[编辑] 注释

此函数的目的是允许对断点的运行时控制,超出调试器可能提供的范围,同时不会导致程序退出。例如,在检测到不常见且非关键的情况时中断,允许使用复杂的运行时敏感条件进行编程控制,在交互式程序中中断用户输入以检查上下文,而无需切换到调试器应用程序等。

此函数标准化了许多类似的现有工具:__builtin_debugtrap 来自 LLVM,__debugbreak 来自 Win32 API,debugger_break 来自 boost.testassert(false)_asm { int 3 } (MSVC) 和 asm("int3") (GCC/clang) 用于 x86 目标,等等.

特性测试 Std 特性
__cpp_lib_debugging 202311L (C++26) 调试支持库
202403L (C++26) 可替换的 std::is_debugger_present

[编辑] 示例

[编辑] 另请参阅

检查程序是否在调试器的控制下运行
(函数) [编辑]
如果 std::is_debugger_present 返回 true,则调用 std::breakpoint
(函数) [编辑]

[编辑] 外部链接

1.  armKEIL: __breakpoint 内在函数
2.  可移植代码片段:调试断言和陷阱
3.  EASTL: EASTL_DEBUG_BREAK
4.  Catch2: CATCH_TRAPCATCH_BREAK_INTO_DEBUGGER
5.  虚幻引擎:DebugBreak
6.  JUCE: JUCE_BREAK_IN_DEBUGGER
7.  Dear ImGui: IM_DEBUG_BREAK
8.  AWS C 公共库:aws_debug_break