最終更新:2026-10-12
C++ dbg-macro デバッグマクロ¶
ログ出力は C++ 開発に欠かせないデバッグ方法の一つです。dbg-macro は Rust 言語の dbg に着想を得て、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 を使う¶
詳しくは 公式ドキュメント を参照してください。
関連トピック¶
- Bazel で C++ プロジェクトをビルド | C++那些事
- Bazel と LLDB の連携デバッグ | C++那些事
- CMake 入門と実践 | C++那些事
- Conan C++ パッケージ管理入門 | C++那些事
- C++ Insights によるコンパイル期観察 | C++那些事
- C++ Jupyter Notebook インタラクティブ | C++那些事
- C++ string から int への変換 | C++那些事
- GCC コンパイルオプション詳解 | C++那些事
- GDB で C++ プログラムをデバッグ | C++那些事
- GDB Python 拡張デバッグ | C++那些事