Namespaces
Variants

std:: breakpoint

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

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

目录

注释

此函数的目的是在程序不退出的前提下,提供调试器功能之外的运行时断点控制能力。例如:在检测到偶发的非关键性条件时中断执行,通过复杂的运行时敏感条件实现程序化控制,在交互式程序中根据用户输入中断以检查上下文而无需切换至调试器应用程序等。

此函数标准化了许多现有的类似功能:LLVM中的 __builtin_debugtrap 、Win32 API中的 __debugbreak boost.test 中的 debugger_break 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