跟踪与调试
来源:互联网 发布:大道院知世 工口 编辑:程序博客网 时间:2024/06/09 20:52
/*
许多C++程序员在跟踪代码时通常的做法是,定义一个简单的Trace类将诊断信息打印到日志文件中。程序员
可以在每个想要跟踪的函数中定义一个Trace对象,在函数的入口和出口Trace类可以分别写一条信息。
缺点:增加程序开销,必须重新编译程序来打开或关闭跟踪。
我的博客:http://blog.csdn.net/windows_nt
*/
class Trace{public:Trace(const CString &name);~Trace();void debug(const CString &msg);static BOOL traceIsActive;private:CString theFunctionName;};//合适的地方做初始化BOOL Trace::traceIsActive = TRUE;Trace::Trace(const CString &name) : theFunctionName(name){if (traceIsActive){OutputDebugString(L"Enter function: " + name + L"\n");}}void Trace::debug(const CString &msg){if (traceIsActive){OutputDebugString(msg);}}Trace::~Trace(){if (traceIsActive){OutputDebugString(L"Exit function: " + theFunctionName + L"\n");}}//以上的代码存在性能问题,优化版:class Trace{public:Trace(const TCHAR* name, ... );~Trace();void debug(const TCHAR* msg);static BOOL traceIsActive;private:CString* theFunctionName;};//合适的地方做初始化BOOL Trace::traceIsActive = TRUE;inline Trace::Trace(const TCHAR* name, ... ) : theFunctionName(NULL){va_list args;va_start(args, name);CString csMsg;csMsg.FormatV(name, args);va_end(args); if (traceIsActive){CString strOutput; strOutput.Format(L"Enter function: %s\n", csMsg );OutputDebugString (strOutput);theFunctionName = new CString(csMsg);}}void Trace::debug(const TCHAR* msg){if (traceIsActive){OutputDebugString( *msg + L"\n");}}inline Trace::~Trace(){if (traceIsActive){OutputDebugString(L"Exit function " + *theFunctionName + L"\n");delete theFunctionName;}}//调用方式{#ifdef MyDebugTCHAR pOutputchar[] = L"OnBnClickedOk()";TCHAR pOutputchar2[] = L"OnBnClickedOk2()";Trace trace(_T("参数1:%s,参数2:%s"), pOutputchar, pOutputchar2);#endif}
- 跟踪与调试
- asp.net 错误跟踪与调试
- sql存储过程调试与跟踪
- PAIP.SQL的跟踪与调试
- VS调试技术-断点与跟踪点
- VS调试技术-断点与跟踪点
- 调试跟踪
- 非MFC的C++内存泄露跟踪与调试
- 非MFC的C++内存泄露跟踪与调试
- Nginx 源码学习(一) nginx的跟踪与调试
- <深入剖析Nginx> nginx的跟踪与调试
- C# 线程手册 第六章 线程调试与跟踪
- C# 线程手册 第六章 线程调试与跟踪 代码跟踪
- C# 线程手册 第六章 线程调试与跟踪 跟踪开关
- 单元测试 VS 跟踪调试
- JavaScript跟踪调试
- 跟踪调试KernelStack笔记
- 单步跟踪调试
- 离散余弦变换(含源码)
- 自己写的简易php日志类
- 你看得懂的海明码校验和纠错原理(一)
- Java编码问题汇总
- 日期操作工具类之 Calendar的常用方法封装
- 跟踪与调试
- Visual leak detector用后感
- 重定向子进程控制台程序的输入输出
- 内弹页面
- sleep,wait,delay函数的区别
- android apk 包反编译
- 自己写的php无限级分类小练习(地区)
- 软件工程--需求工程
- 日志文件分析工具—AWStats在IIS中的配置步骤