HeadlinesBriefing HeadlinesBriefing.com

C++26 Добавляет Стандартный Заголовок <debugging> для Точек останова

Hacker News •
×

C++26 вводит стандартный заголовок <debugging> с тремя noexcept-функциями: std::breakpoint(), std::is_debugger_present() и std::breakpoint_if_debugging(). Это исключает необходимость в платформозависимых макросах вроде __debugbreak() или встроенном ассемблере. Заголовок freestanding и заменяемый, что позволяет кастомизировать реализацию на "голых" системах. std::breakpoint() триггерит остановку отладчика при наличии подключенного отладчика, в противном случае поведение определяется реализацией (например, SIGTRAP). std::is_debugger_present() в реальном времени проверяет активное подключение отладчика, с платформозависимой реализацией (например, API Windows или /proc/self/status в Linux). Заменяемость позволяет использовать в freestanding-окружениях. std::breakpoint_if_debugging() объединяет оба для условных точек останова, повторяя паттерны, используемые в Boost.Test, Catch2, Dear ImGui и Unreal Engine. Функция стандартизирует долгосрочную перерождение колеса в проектах C++, упрощая кросс-платформенные инструменты отладки.

Источник: Hacker News · Сводку подготовил HeadlinesBriefing