您的位置:首页 > 编程语言 > C语言/C++

积累就是财富 -- DubugView与Trace宏的使用讲解

2011-07-02 15:06 393 查看
今天写程序突然想起有个debugview工具没用过(小菜鸟) 下载了一个并使用了一下挺好。。
设置很简单将debugview执行文件放在下边的目录下
D:\Program Files\Microsoft Visual Studio\Common\Tools
然后打开vc 一次选择工具– 定制 然后 自己参照上边已有工具添加以下路径 即可。
同理也可以放入任何一个应用程序。快捷方式路径即可比如QQ其路径: D:\Program Files\Tencent\QQ\Bin\QQ.exe
这样在vc6里也可以启动QQ了嘿嘿小伎俩。
安装完成后下面介绍它的简单用法.结合TRACE宏
TRACE
TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能;
使用格式如下:
TRACE("%d",123); TRACE0,TRACE1,TRACE2。。。分别对应0,1,2。。个参数 例TRACE( "x = %d and y = %d\n", x, y );
TRACE信息输出到VC IDE环境的输出窗口(该窗口是你编译项目出错提示的那个窗口)
但仅限于你在VC中调试(F5)自己的程序并在输出窗口的调试选项卡里看默认的是组建(注意)

TRACE信息还可以使用DEBUGVIEW来捕获到。这种情况下,你可以在VC的IDE环境中运行你的程序,
也可以将BUILD好的DEBUG版本的程序单独运行,这个时候在DEBUGVIEW的窗口看到DEBUGVIE格式的输出了。

TRACE宏与Printf函数,均可以使程序在运行过程中输出一些信息,使我们能了解程序的一些状态。但有一点不同的是:
TRACE宏只有在调试状态下才有所输出,而Printf函数在任何情况下都有输出。和Printf函数一样,TRACE函数可以接受多个参数
需要的头文件自己添加例如Debug.h 代码如下:
#ifndef __DEBUG_H__
#define __DEBUG_H__
#ifdef _DEBUG

void _trace(char *fmt, ...);
#define ASSERT(x) {if(!(x)) _asm{int 0x03}}
#define VERIFY(x) {if(!(x)) _asm{int 0x03}} //译注:为调试版本时产生中断有效

#else
#define ASSERT(x)
#define VERIFY(x) x //译注:为发行版本时不产生中断
#endif

#ifdef _DEBUG
#define TRACE _trace

#else
inline void _trace(LPCTSTR fmt, ...) { }
#define TRACE 1 ? (void)0 : _trace
#endif

#endif // __DEBUG_H__
Debug的源文件Debug.cpp 代码如下:
#ifdef _DEBUG
#include <stdio.h>
#include <stdarg.h>
#include <windows.h>

void _trace(char *fmt, ...)
{
char out[1024];
va_list body;
va_start(body, fmt);
vsprintf(out, fmt, body); //译注:格式化输入的字符串fmtt
va_end(body); //到输出字符串ou
OutputDebugString(out); //译注:输出格式化后的字符串到调试器
}
#endif
该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调试也在RELEASE的时候减少代码量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息