如何在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 );
答案 0 :(得分:5)
如果您的意思是“我如何跟踪代码的执行路径?”然后,您需要使用源级符号调试器。
在Linux中,这通常意味着使用GDB,其中有许多GUI前端;在命令行上使用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
之间缺少逗号是故意的。它打印一个带有源位置的格式化字符串。我在实时嵌入式系统中工作,所以我经常在输出中包含一个时间戳。