Qt 调试技巧 #
日志输出 #
qDebug 使用 #
cpp
#include <QDebug>
// 基本输出
qDebug() << "Debug message";
qInfo() << "Info message";
qWarning() << "Warning message";
qCritical() << "Critical message";
// 格式化输出
qDebug("Value: %d", value);
// 输出 Qt 类型
QString text = "Hello";
qDebug() << "Text:" << text;
// 输出容器
QList<int> list = {1, 2, 3};
qDebug() << "List:" << list;
自定义日志处理 #
cpp
void myMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
QString txt;
switch (type) {
case QtDebugMsg:
txt = QString("Debug: %1").arg(msg);
break;
case QtInfoMsg:
txt = QString("Info: %1").arg(msg);
break;
case QtWarningMsg:
txt = QString("Warning: %1").arg(msg);
break;
case QtCriticalMsg:
txt = QString("Critical: %1").arg(msg);
break;
case QtFatalMsg:
txt = QString("Fatal: %1").arg(msg);
break;
}
QFile file("log.txt");
if (file.open(QIODevice::Append)) {
file.write(txt.toUtf8() + "\n");
file.close();
}
}
// 安装日志处理器
qInstallMessageHandler(myMessageHandler);
Qt Creator 调试 #
断点调试 #
text
1. 设置断点:点击行号左侧
2. 启动调试:F5
3. 单步执行:F10
4. 进入函数:F11
5. 跳出函数:Shift+F11
6. 继续执行:F5
7. 停止调试:Shift+F5
查看变量 #
cpp
// 在调试器中查看 Qt 类型
QString text = "Hello"; // 直接显示内容
QList<int> list = {1, 2, 3}; // 显示所有元素
// 使用调试助手
// Qt Creator 自动格式化 Qt 类型
条件断点 #
text
1. 右键断点 -> 编辑断点
2. 设置条件:i == 10
3. 设置命中次数:命中 5 次后停止
常见问题排查 #
内存问题 #
cpp
// 使用 Q_OBJECT 检查
// 确保类声明中有 Q_OBJECT 宏
// 检查信号槽连接
bool connected = connect(sender, &Sender::signal, receiver, &Receiver::slot);
Q_ASSERT(connected);
// 检查对象生命周期
qDebug() << "Object created:" << this;
线程问题 #
cpp
// 检查线程
qDebug() << "Thread:" << QThread::currentThread();
// 使用 Q_ASSERT 检查线程
Q_ASSERT(QThread::currentThread() == this->thread());
性能问题 #
cpp
// 使用 QElapsedTimer 测量时间
QElapsedTimer timer;
timer.start();
// 执行代码
qDebug() << "Elapsed:" << timer.elapsed() << "ms";
下一步 #
恭喜你完成了 Qt 完全指南的学习!现在你已经掌握了从基础到高级的 Qt 开发知识,可以开始构建自己的跨平台应用了!
最后更新:2026-03-29