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.
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.