定义自己的Debug信息
2015-07-02 21:32
393 查看
定义自己的Debug函数
在编写程序,希望自己的调试信息,并依此跟踪程序出现的问题。因此需要定义自己的Debug函数,以便自己更好的分析问题的所在。下面是自己用的Debug函数。追踪函数
追踪函数主要用于确定是否进入函数内。用于定位是否已经进入到函数中。先码上代码。define DEFUBFILE "D:\\Debug.log" #define DEBUGTRACE(X) { \ QFile file(DEFUBFILE);\ file.open(QIODevice::ReadWrite | QIODevice::Append | QIODevice::Text);\ QTextStream out(&file);\ QString logTime = QDateTime::currentDateTime().toString("[yyyy-dd-MM hh:mm:ss.zzz]");\ QString result = QString("%1 :{ %2:%3---%4}").arg(X).arg(__FILE__).arg(__LINE__).arg(__FUNCTION__);\ out << logTime <<" "<< result << endl; \ file.close();\ }
注意这里主要用Qt写的,因此用的话需要包含Qt的东西,当然也很容易修改成C++。这样在自己的函数中就可以这样写,如下代码
int func() { DEBUGTRACE("ENTER"); //do something DEBUGTRACE("LEAVE"); }
这样当判断是否调用某个函数的时候,就可以打开log,然后定位了。
Bug信息输出
有了跟踪函数以后,需要把log信息打印出来,以各种形式打印出来,因此也需要定义自己的log信息输出函数。上码:#define LOGWRITER(format,...) {\ char logBuffer[BUFFER_LENGTH] = {0};\ sprintf(logBuffer,format,## __VA_ARGS__);\ QString logTime = QDateTime::currentDateTime().toString("[yyyy-dd-MM hh:mm:ss.zzz]");\ QString result = QString("{ %1:%2---%3 }").arg(__FILE__).arg(__LINE__).arg(__FUNCTION__);\ QFile file(DEFUBFILE);\ file.open(QIODevice::ReadWrite | QIODevice::Append | QIODevice::Text);\ QTextStream out(&file);\ out<<logTime<<" "<<logBuffer<<" :"<<result<<endl;\ file.close();\ }
这上面的代码使用了可变长参数的用法。因此可以像printf函数一样使用了。
注意上面也是使用了Qt的一些东西,当然也非常容易的转化为C++代码。
总结
也许程序中用了日记系统,例如log4Cpp等这样的日记系统,但是有时非常大,而我们仅仅需要一种比较简单的方式记录一些调试信息而已,不会去考虑多线程之类的各种情况。相关文章推荐
- 《C语言及程序设计》程序阅读——递归函数
- 电脑配置
- java集合 之 Collection和Iterator接口
- IE6下不能定义1px高度的容器和IE6 双边距
- 整理下混乱的生活
- JSP基础实例_列表框交互_学习笔记
- linux程序设计——进程和信号(第十一章)
- 免费:MYCNCART 自适应主题模板 MCCThemes-001
- 公钥 私钥
- 【ubuntu操作系统入门】系统输入法设置
- [BZOJ 1951] 古代猪文【Lucas定理/费马小定理/中国剩余定理/扩展欧几里得】
- 鸟哥的Linux私房菜-----11、压缩指令与正则表示法
- 安卓图片显示
- Linux中的端口占用问题
- maven web 工程部署
- 运算符重载简单加法a+b
- OpenCV之三 图像的载入,显示和输出
- 网络最大流问题之Ford-Fulkerson算法原理详解
- 关于DSAPI.DLL
- JavaScript:undefined And null差异