Namespaces
Variants

std:: breakpoint

From de.cppreference.net
Definiert im Header <debugging>
void breakpoint ( ) noexcept ;
(seit C++26)

Unbedingter Haltepunkt: Versucht, die Programmausführung vorübergehend anzuhalten und die Kontrolle an den Debugger zu übergeben, unabhängig davon, ob die Anwesenheit eines Debuggers festgestellt werden kann. Das Verhalten dieser Funktion ist implementierungsdefiniert.

Inhalt

Hinweise

Die Absicht dieser Funktion besteht darin, eine Laufzeitkontrolle von Haltepunkten zu ermöglichen, die über das hinausgeht, was ein Debugger bieten könnte, ohne dass das Programm beendet wird. Beispielsweise das Unterbrechen bei Erkennung einer seltenen, unkritischen Bedingung, die programmatische Kontrolle mit komplexen laufzeitsensitiven Bedingungen ermöglicht, das Unterbrechen bei Benutzereingabe zur Inspektion des Kontexts in interaktiven Programmen, ohne zur Debugger-Anwendung wechseln zu müssen, usw.

Diese Funktion standardisiert viele ähnliche, bereits existierende Einrichtungen: __builtin_debugtrap von LLVM, DebugBreak() von der Win32-API, __debugbreak die Microsoft-spezifische C/C++-Erweiterung, debugger_break von boost.test, assert(false), _asm { int 3 } (MSVC) und asm("int3") (GCC/clang) für x86-Ziele, usw.

Feature-Test-Makro Wert Std Feature
__cpp_lib_debugging 202311L (C++26) Debugging-Unterstützungsbibliothek
202403L (C++26) Ersetzbar std::is_debugger_present

Beispiel

Siehe auch

prüft, ob ein Programm unter der Kontrolle eines Debuggers läuft
(Funktion)
ruft std::breakpoint auf, falls std::is_debugger_present true zurückgibt
(Funktion)

Externe Links

1. armKEIL: __breakpoint Intrinsic
2. Portable Snippets: Debugging-Assertions und Traps
3. EASTL: EASTL_DEBUG_BREAK
4. Catch2: CATCH_TRAP und 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