您的位置:首页 > 其它

定义自己的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等这样的日记系统,但是有时非常大,而我们仅仅需要一种比较简单的方式记录一些调试信息而已,不会去考虑多线程之类的各种情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: