C++ 的 debug 工具:dbg-macro

打日志是 C++ 开发中必不可少的一种 debug 方式,dbg-macro 受 Rust 语言中 的 dbg 启发,提供比 printfstd::cout 更好的宏函数。主要有如下特点:

  • 美观的彩色输出(当输出不是交互式终端时,颜色将自动禁用)
  • 兼容 C++11,并且是 header-only
  • 支持基础类型和 STL 容器类型的输出
  • 可以输出文件名、行号、函数名和原始表达式

例如下面的代码:

  1. #include <vector>
  2. #include <dbg.h>
  3. // You can use "dbg(..)" in expressions:
  4. int factorial(int n) {
  5. if (dbg(n <= 1)) {
  6. return dbg(1);
  7. } else {
  8. return dbg(n * factorial(n - 1));
  9. }
  10. }
  11. int main() {
  12. std::string message = "hello";
  13. dbg(message); // [example.cpp:15 (main)] message = "hello" (std::string)
  14. const int a = 2;
  15. const int b = dbg(3 * a) + 1; // [example.cpp:18 (main)] 3 * a = 6 (int)
  16. std::vector<int> numbers{b, 13, 42};
  17. dbg(numbers); // [example.cpp:21 (main)] numbers = {7, 13, 42} (size: 3) (std::vector<int>)
  18. dbg("this line is executed"); // [example.cpp:23 (main)] this line is executed
  19. factorial(4);
  20. return 0;
  21. }

效果如下:

C++的Debug工具dbg-macro - 图1

安装

  1. git clone https://github.com/sharkdp/dbg-macro
  2. sudo ln -s $(readlink -f dbg-macro/dbg.h) /usr/include/dbg.h

这样,你就可以在任何地方使用 dbg.h 了。

在 Arch Linux 上

  1. yay -S dbg-macro

使用 vcpkg

  1. vcpkg install dbg-macro

更多内容详见 官方文档