积累就是财富 -- 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的时候减少代码量。
设置很简单将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的时候减少代码量。
相关文章推荐
- 【android 开发知识积累】——属性(Attribute)资源的使用和自定义View组件
- [积累]使用Html设置Textview文字显示的不同格式
- 【FastDev4Android框架开发】非常漂亮的进度指示器AVLoadingIndicatorView的使用讲解(十八)
- Android App中使用SurfaceView制作多线程动画的实例讲解
- UIscrollview和UItableView结合使用(就是cell可以滑动改变图片)
- 详细讲解WaterRefreshLoadMoreView的使用
- 【每天积累一点点】BottomNavigationView使用教程
- Android开发中RecyclerView组件使用的一些进阶技讲解
- Android App在ViewPager中使用Fragment的实例讲解
- TextView使用完全讲解
- 使用ViewDragHelp实现ImageView拖动超过屏幕1/2回到屏幕左边,否则到右边,还有一个就是还能实现点击的效果
- 有关ViewFlipper的使用及设置动画效果的讲解
- iOS经典讲解之UIAlertView的使用技巧
- 有关ViewFlipper的使用及设置动画效果的讲解
- Msql视图(View)使用实例讲解
- iOS 自定义view 如何不使用self.view也就是系统自带的 view,使用自己定制的view
- 有关ViewFlipper的使用及设置动画效果的讲解
- IOS学习笔记(十二)之IOS开发之表视图(UITableView)的讲解与使用(二)
- iOS 使用WKWebView替换UIWebView(一)——理论讲解
- 实例讲解Android中ViewPager组件的一些进阶使用技巧