命名空间
变体
操作

std::breakpoint

来自 cppreference.cn
< 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