如何在c++中调用TRACE?请解释 例如这个简单的代码
int x = 1;
int y = 16;
float z = 32.0;
TRACE( "This is a TRACE statement\n" );
TRACE( "The value of x is %d\n", x );
TRACE( "x = %d and y = %d\n", x, y );
TRACE( "x = %d and y = %x and z = %f\n", x, y, z );
最佳答案
如果您的意思是“我怎样才能跟踪代码的执行路径?”然后您需要使用源代码级符号调试器。
在 Linux 中,这通常意味着使用具有许多 GUI 前端的 GDB;在命令行上使用 GDB 是神秘而费力的,它可以通过 Eclipse 或 KDevelop 或独立的 Insight 调试器使用。在 Windows 中,调试器将特定于编译器,但 VC++ 拥有最好的可用调试器(在 Express Edition 中是免费的)。
回应 davit 的编辑
这样定义一个 TRACE 宏:
#if defined NDEBUG
#define TRACE( format, ... )
#else
#define TRACE( format, ... ) printf( "%s::%s(%d)" format, __FILE__, __FUNCTION__, __LINE__, __VA_ARGS__ )
#endif
请注意,"%s::%s(%d)"
和 format
之间没有逗号是故意的。它打印带有源位置前缀的格式化字符串。我经常在实时嵌入式系统中工作,所以我也在输出中包含时间戳。
关于c++ - c++中的TRACE系统函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3379193/