c++ - c++中的TRACE系统函数调用

标签 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 );

最佳答案

如果您的意思是“我怎样才能跟踪代码的执行路径?”然后您需要使用源代码级符号调试器。

在 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/

相关文章:

c++ - 这个表达式是什么意思 : bool(__args. ..)

c++ - 函数调用可以重新排序吗

c++ - 自动添加和删除列表中的对象

c++ - 在 C++ 中提取另一个泛型类型的泛型类型

c++ - 新图的深拷贝构造函数

c++ - 直方图程序给出奇怪的输出 C++

c++ - std::random_device 和 std::mt19937 服从均匀分布吗?

c++ - 为什么 STL 数据结构需要完全定义的类型

c++ - 我可以在 XCode 4 或 OSX Lion 中使用 C++11 的最新功能吗?

c++ - 对 STL 的头文件