Последнее обновление:2026-10-12
Отладочный макрос dbg-macro для C++¶
Логирование — неотъемлемый способ отладки в разработке на C++; dbg-macro вдохновлён dbg из языка Rust и предоставляет макро-функции лучше, чем printf и std::cout. Основные особенности:
- красивый цветной вывод (если вывод идёт не в интерактивный терминал, цвета автоматически отключаются)
- совместимость с C++11 и header-only
- поддержка вывода базовых типов и типов контейнеров STL
- может выводить имя файла, номер строки, имя функции и исходное выражение
Например, следующий код:
#include <vector>
#include <dbg.h>
// You can use "dbg(..)" in expressions:
int factorial(int n) {
if (dbg(n <= 1)) {
return dbg(1);
} else {
return dbg(n * factorial(n - 1));
}
}
int main() {
std::string message = "hello";
dbg(message); // [example.cpp:15 (main)] message = "hello" (std::string)
const int a = 2;
const int b = dbg(3 * a) + 1; // [example.cpp:18 (main)] 3 * a = 6 (int)
std::vector<int> numbers{b, 13, 42};
dbg(numbers); // [example.cpp:21 (main)] numbers = {7, 13, 42} (size: 3) (std::vector<int>)
dbg("this line is executed"); // [example.cpp:23 (main)] this line is executed
factorial(4);
return 0;
}
Установка¶
git clone https://github.com/sharkdp/dbg-macro
sudo ln -s $(readlink -f dbg-macro/dbg.h) /usr/include/dbg.h
dbg.h где угодно.
На Arch Linux¶
Использование vcpkg¶
Подробнее см. в официальной документации.Похожие темы¶
- Сборка проектов C++ с Bazel | C++那些事
- Совместная отладка Bazel и LLDB | C++那些事
- CMake: введение и практика | C++那些事
- Введение в управление пакетами Conan для C++ | C++那些事
- C++ Insights: взгляд на этап компиляции | C++那些事
- Интерактивные C++ Jupyter Notebook | C++那些事
- Преобразование C++ string в int | C++那些事
- Подробный разбор опций компиляции GCC | C++那些事
- Отладка программ на C++ с помощью GDB | C++那些事
- Расширенная отладка с помощью GDB Python | C++那些事