Namespaces
Variants

std:: breakpoint

From zh.cppreference.net
定义于头文件 <debugging>
void breakpoint ( ) noexcept ;
(C++26 起)

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

内容

说明

此函数的意图是在不导致程序退出的前提下,允许对断点进行运行时控制,其功能可能超越调试器所能提供的范围。例如,在检测到非关键但罕见条件时触发中断;通过复杂运行时敏感条件实现程序化控制;在交互式程序中通过用户输入触发中断以检查上下文,而无需切换到调试器应用程序等。

此函数将许多已有的类似机制标准化:__builtin_debugtrap(来自 LLVM)、DebugBreak()(来自 Win32 API)、__debugbreak(Microsoft 特定 C/C++ 扩展)、debugger_break(来自 boost.test)、assert(false)、_asm { int 3 }(MSVC)和 asm("int3")(GCC/clang)等(针对 x86 目标)、等。

功能特性测试宏 值 标准 功能特性
__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_TRAP 与 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