TR ++系统函数调用c ++

时间:2010-07-31 17:48:14

标签: c++

如何在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 );

1 个答案:

答案 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之间缺少逗号是故意的。它打印一个带有源位置的格式化字符串。我在实时嵌入式系统中工作,所以我经常在输出中包含一个时间戳。