【问题标题】:Macro to print function entry and exit trace打印函数进入和退出跟踪的宏
【发布时间】:2014-02-18 19:38:35
【问题描述】:

我正在尝试调试一个问题,我想打印每个函数的进入和退出/离开的跟踪,以便我可以跟踪序列流。 可以编写一个宏来打印函数进入和退出/离开跟踪。 我知道我应该创建一个类,它的构造函数应该记录入口,而析构函数应该记录函数的退出/离开。但我不清楚它应该如何实施。任何的意见都将会有帮助。 谢谢!

【问题讨论】:

  • 您要的是代码或提示'n 指针?为什么不使用 gdb?
  • 我看不出添加“输入函数”和“函数退出”如何帮助您调试问题。如果您在遵循“序列流”时遇到问题,那么您的程序可能需要重构。阅读 GDB 教程比编写一个特设宏来自动跟踪函数要快。
  • 添加入口和出口跟踪将让我隔离代码中出现问题的部分。

标签: c++ function macros trace


【解决方案1】:
#define LOG_CALL tracer_t _token(__func__)
struct tracer_t {
    char const* fname;
    tracer_t(char const* fname_): fname(fname_) { printin(fname); }
    ~tracer_t() { printout(fname); }
}

void myfunc() { LOG_CALL;
    // test function
}

【讨论】:

    【解决方案2】:

    有几个 C++ 的日志框架可以帮助完成这类事情。我喜欢log4cplus。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-05
      • 2014-08-23
      • 2017-04-16
      相关资源
      最近更新 更多