Point d'arrêt inconditionnel : Tente d'arrêter temporairement l'exécution du programme et de transférer le contrôle au débogueur, indépendamment de la possibilité de détecter la présence d'un débogueur. Le comportement de cette fonction est défini par l'implémentation.
L'intention de cette fonction est de permettre un contrôle à l'exécution des points d'arrêt au-delà de ce qu'un débogueur pourrait offrir, sans pour autant provoquer la sortie du programme. Par exemple, s'arrêter lorsqu'une condition non critique mais peu fréquente est détectée, permettre un contrôle programmatique avec des conditions complexes sensibles à l'exécution, s'arrêter sur une saisie utilisateur pour inspecter le contexte dans des programmes interactifs sans avoir à basculer vers l'application de débogage, etc.
Cette fonction standardise de nombreuses fonctionnalités existantes similaires : __builtin_debugtrap de LLVM, DebugBreak() de l'API Win32, __debugbreak l'extension C/C++ spécifique à Microsoft, debugger_break de boost.test, assert(false), _asm { int 3 } (MSVC) et asm("int3") (GCC/clang) pour les cibles x86, etc.