前言
使用VS2013开发,Debug时一直加载dll符号,无法正常调试。按照网上的方法,关掉了符号加载,之后Debug时程序可以正常运行,但是因为没有dll符号,无法watch变量,也不能调试。因此选择在运行QT 的exe程序时,将调试信息输出到控制台。
方法
方法一
这个是查阅资料,有博主使用的方法,在Qt项目的.pro文件中添加CONFIG += console
,确保Qt应用程序以控制台应用程序的方式运行。这样,QDedbug
的输出会显示在运行程序的命令行窗口(或控制台窗口)中。例如:
TEMPLATE = app
CONFIG += console
方法二
这个是我使用的方法,在main函数中使用AllocConsole()
函数来分配一个新的控制台窗口,并使用freopen
函数将标准输出和标准错误输出重定向到控制台。这样,QDebug
的输出将显示在这个控制台窗口上。以下是示例代码:
#include <QCoreApplication>
#include <QTextStream>
#include <QDebug>
#include <Windows.h>
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文件,选择了第二种方法。实测可以运行。
注意
在发布版本时,删除或禁用这些额外的调试输出,以避免在最终发布的可执行文件中产生不必要的日志输出。