In MSVC, DebugBreak() or __debugbreak cause a debugger to break. On x86 it is equivalent to writing \"_asm int 3\", on x64 it is something different. When compiling with gcc
GCC has a builtin function named __builtin_trap which you can see here, however it is assumed that code execution halts once this is reached.
you should ensure that the __builtin_trap() call is conditional, otherwise no code will be emitted after it.
this post fueled by all of 5 minutes of testing, YMMV.