运行QT的exe程序时将QDebug调试信息输出到控制台

前言

        使用VS2013开发,Debug时一直加载dll符号,无法正常调试。按照网上的方法,关掉了符号加载,之后Debug时程序可以正常运行,但是因为没有dll符号,无法watch变量,也不能调试。因此选择在运行QT 的exe程序时,将调试信息输出到控制台。

方法

方法一

这个是查阅资料,有博主使用的方法,在Qt项目的.pro文件中添加CONFIG += console,确保Qt应用程序以控制台应用程序的方式运行。这样,QDedbug的输出会显示在运行程序的命令行窗口(或控制台窗口)中。例如:

TEMPLATE = app
CONFIG += console

方法二

这个是我使用的方法,在main函数中使用AllocConsole()函数来分配一个新的控制台窗口,并使用freopen函数将标准输出和标准错误输出重定向到控制台。这样,QDebug的输出将显示在这个控制台窗口上。以下是示例代码:

#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 分配一个新的控制台窗口
    AllocConsole();

    // 重定向标准输出和标准错误输出到控制台
    freopen("CONOUT$", "w", stdout);
    freopen("CONOUT$", "w", stderr);

    // 使用QDebug输出调试信息
    qDebug() << "Hello, this is a debug message.";

    return a.exec();
}

总结

我是在VS2013中配置的QT开发环境,工程里没有pro文件,选择了第二种方法。实测可以运行。

注意

在发布版本时,删除或禁用这些额外的调试输出,以避免在最终发布的可执行文件中产生不必要的日志输出。

你可能感兴趣的:(qt)