Hacker News Front Page · jandeboevrie ·
C++26: the new debugging header
C++26 incorpora el encabezado `<debugging>` con `std::breakpoint()`, `std::is_debugger_present()` y `std::breakpoint_if_debugging()`, para ofrecer una API estándar en lugar de las soluciones específicas de cada plataforma que muchos proyectos implementan por separado. La detección del debugger se consulta en cada llamada y la función puede reemplazarse, lo que permite adaptarla a plataformas freestanding sin mecanismos del sistema operativo. Estas funciones también permiten ajustar diagnósticos, timeouts y otras decisiones del programa mientras hay una sesión de depuración.
If you’ve ever needed to hit a breakpoint programmatically in C++, you’ve probably written something like this: 1 2 3 4 5 6 7 8 9 #if defined(_MSC_VER) __debugbreak(); #elif defined(__clang__) __builtin_debugtrap(); #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) __asm__ volatile("int3"); #else raise(SIGTRAP); #endif Every major C++ project reinvents this wheel. Boost.Test has debugger_break(), Catch2 has CATCH_BREAK_INTO_DEBUGGER, Dear ImGui has IM_DEBUG_BREAK() and Unreal has UE_DEBUG_BREAK. The platform knowledge required is arcane but well-known to tooling implementers — it just wasn’t standardized. C++26 fixes this with P2546R5 and its companion P2810R4 thanks to Rene Ferdinand Rivera Morell. A new <debugging> header provides…