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 起)

无条件断点:尝试暂时停止程序的执行,并将控制权转移到调试器,而无论是否可以检测到调试器的存在。该函数的行为由实现定义。

注解

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

该函数将许多类似的现有功能标准化: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 intrinsic
2.  Portable Snippets: Debugging assertions and traps
3.  EASTL: EASTL_DEBUG_BREAK
4.  Catch2: CATCH_TRAP and 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