C++程序执行路径日志打印
在调试程序过程中,当程序在某句代码崩溃了,要想排查问题原因,除了拿到.dmp文件看堆栈信息之外,另外就是打印日志。在这篇文章,我就来说说从日志将问题缩小到问题函数。
其实原理很简单,局部变量的作用于就存在于函数体范围内,在刚进入函数时新建对象,出函数析构对象,与此同时打印信息。
代码如下:
class myLog
{
public:
myLog(QString strFunc, QString strInfo)
{
m_strFunc = strFunc;
if(!strInfo.isEmpty())
{
strFunc=strFunc+strInfo;
}
qDebug()<<”enter func”+strFunc;
};
~myLog(){qDebug()<<”leave Func”+strFunc;};
private:
QString m_strFunc;
}
/#define TraceLog(info) myLog log(FUNCTION, info);
/#define TraceLogNo() myLog log(__FUNCTION,”“);