Última atualização:2026-10-12
Macro de depuração dbg-macro em C++¶
Registrar logs é uma forma indispensável de depuração no desenvolvimento em C++; o dbg-macro, inspirado no dbg da linguagem Rust, oferece funções de macro melhores que printf e std::cout. Principais características:
- Saída colorida e elegante (as cores são desativadas automaticamente quando a saída não é um terminal interativo)
- Compatível com C++11 e header-only
- Suporta a saída de tipos básicos e de tipos de contêineres da STL
- Pode exibir o nome do arquivo, o número da linha, o nome da função e a expressão original
Por exemplo, o código a seguir:
#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;
}
O resultado é o seguinte:
Instalação¶
git clone https://github.com/sharkdp/dbg-macro
sudo ln -s $(readlink -f dbg-macro/dbg.h) /usr/include/dbg.h
Assim, você já pode usar o dbg.h em qualquer lugar.
No Arch Linux¶
Usando o vcpkg¶
Para mais detalhes, consulte a documentação oficial.
Tópicos relacionados¶
- Construindo projetos C++ com Bazel | C++那些事
- Depuração conjunta de Bazel e LLDB | C++那些事
- CMake: introdução e prática | C++那些事
- Introdução ao gerenciamento de pacotes C++ com Conan | C++那些事
- C++ Insights: observação em tempo de compilação | C++那些事
- C++ interativo com Jupyter Notebook | C++那些事
- Converter string para int em C++ | C++那些事
- Opções de compilação do GCC em detalhes | C++那些事
- Depuração de programas C++ com GDB | C++那些事
- Depuração estendida com Python no GDB | C++那些事