Namensräume
Varianten
Aktionen

std::breakpoint

Von cppreference.com
< cpp‎ | utility
 
 
 
Definiert in der Header-Datei <debugging>
void breakpoint() noexcept;
(seit C++26)

Bedingungsloser Breakpoint: Versucht, die Programmausführung vorübergehend zu stoppen und die Kontrolle an den Debugger zu übergeben, unabhängig davon, ob die Anwesenheit eines Debuggers erkannt werden kann. Das Verhalten dieser Funktion ist implementierungsabhängig.

Inhalt

[edit] Hinweise

Die Absicht dieser Funktion ist es, die Laufzeitkontrolle von Breakpoints über das hinaus zu ermöglichen, was von einem Debugger verfügbar sein könnte, ohne dass das Programm beendet wird. Zum Beispiel das Brechen, wenn eine seltene nicht-kritische Bedingung erkannt wird, die programmatische Kontrolle mit komplexen laufzeitempfindlichen Bedingungen ermöglicht, das Brechen bei Benutzereingaben, um den Kontext in interaktiven Programmen zu inspizieren, ohne zum Debugger wechseln zu müssen usw.

Diese Funktion standardisiert viele ähnliche vorhandene Einrichtungen: __builtin_debugtrap von LLVM, __debugbreak aus der Win32 API, 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) Ersetzbares std::is_debugger_present

[edit] Beispiel

[edit] Siehe auch

prüft, ob ein Programm unter der Kontrolle eines Debuggers ausgeführt wird
(Funktion) [bearbeiten]
ruft std::breakpoint auf, wenn std::is_debugger_present true zurückgibt
(Funktion) [bearbeiten]

[edit] Externe Links

1.  armKEIL: __breakpoint intrinsic
2.  Portable Snippets: Debugging assertions and 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