QT上的一个打印调试到文件的函数

在进行麒麟系统上中望CAD二次开发时,需要进行调试,但在CAD中显示不方便,于是写了一个打印调试信息到本地文件的函数,发出来,供大家参考。

#include <qtextstream.h>
#include <qdatetime.h>
#include <dlfcn.h>
#include <QFile>
#include <QDir>

/*************************************************
Description:    // 获取函数运行信息
Input:          // func - 函数指针
*************************************************/
QString identify_function_ptr(void* func)
{
    Dl_info info;
    int rc = dladdr(func,&info);
    return info.dli_fname;
}
/*************************************************
Description:    // 打印调试信息到文本文件
Input:          // outSt - 字符 filename - 文件名
*************************************************/
void DPrintfToFile(QString outSt,QString filename)
{
    //默认文件名
    if(filename=="")
    {
        filename = "DebugLog.txt";
    }

    //路径
    QString filePath = identify_function_ptr((void*) identify_function_ptr);
    QFileInfo fileInfo(filePath);
    QString directoryPath = fileInfo.dir().path() + "/" + filename;
    QFile fileError(directoryPath);
    if(fileError.open(QIODevice::ReadWrite|QIODevice::Text|QIODevice::Append)){
        // 将内容写入文件
        QTextStream out(&fileError);
        out.setCodec("UTF-8");
        QDateTime dateTime= QDateTime::currentDateTime();//获取系统当前的时间
        QString strTime = dateTime.toString("yyyy-MM-dd hh:mm:ss");//格式化时间
        out.seek(0);
        out << strTime << ":" << outSt << "\n";
        fileError.close();
    }
}

这个函数在写的时候有几个坑。

1.注意是代码所在的DLL的路径,不是EXE的运行路径,在CAD二次开发中,DLL的路径和CAD运行程序不在一个路径,DLL是加载上去的。

2.把调试信息写入文件时,要设置字符集为UTF-8,不然中文字符可能写不进去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农709

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值