std::breakpoint
| 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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[edit] Siehe auch
| (C++26) |
prüft, ob ein Programm unter der Kontrolle eines Debuggers ausgeführt wird (Funktion) |
| (C++26) |
ruft std::breakpoint auf, wenn std::is_debugger_present true zurückgibt (Funktion) |
[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 |