Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用于打印函数入口和出口跟踪的宏_C++_Function_Macros_Trace - Fatal编程技术网

C++ 用于打印函数入口和出口跟踪的宏

C++ 用于打印函数入口和出口跟踪的宏,c++,function,macros,trace,C++,Function,Macros,Trace,我试图调试一个问题,我想打印每个函数的入口和出口/出口跟踪,以便跟踪序列流。 可以编写用于打印函数进入和退出/离开跟踪的宏。 我知道我应该创建一个类,它的构造函数应该记录函数的进入和退出。但我不清楚该如何具体实施。任何建议都会有帮助。 谢谢

我试图调试一个问题,我想打印每个函数的入口和出口/出口跟踪,以便跟踪序列流。 可以编写用于打印函数进入和退出/离开跟踪的宏。 我知道我应该创建一个类,它的构造函数应该记录函数的进入和退出。但我不清楚该如何具体实施。任何建议都会有帮助。
谢谢您要的是代码还是提示?为什么不使用gdb?我看不出添加“函数输入”和“函数退出”将如何帮助您调试问题。如果您在遵循“顺序流”时遇到问题,那么您的程序可能需要重构。阅读关于GDB的教程要比编写一个特殊宏来自动跟踪函数快得多。添加入口和出口跟踪可以让我隔离代码中出错的部分。
#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
}