当前位置:首页 » 编程软件 » qt编译debug

qt编译debug

发布时间: 2022-05-11 00:28:21

1. QtCreator怎么使用debug功能

您好。
在项目project中配置下为debug模式!!Make:
mingw32-make.exe
debug
-w
in

首先要设置一个断点,然后Debug(当然要在Debug模式下),
程序会运行到断点处,然后就可以用F10或F11之类的调试了
Qt-SDK有debug功能的,不过用的是MingW编译器,编译成动态的debug版本后可以debug
如果还有问题,可以继续追问,感谢。

2. Qt debug模式和release模式的区别

debug当然是可以调试程序了,而release就不可以。在程序出现错误的时候,在debug模式下通过设置断点来调试程序。当程序所有错误都解决了以后,在release模式下生成程序,就可以对外发布了。debug生成的程序因为包含了调试信息,编译器也未做优化,所以比release模式生成的程序要大很多。

3. qt qdebug正常releasd异常

qt qdebug正常releasd异常,原因:指向了野指针,导致死机。
现象:增加了exe图标功能,重新编译debug正常,但realse崩溃。
原因:指向了野指针,导致死机。
解决:
1、realse版本重新编译,野指针重新指向正确的指针路径。
2、realse版本用debug调试,查看最后崩溃指向代码在哪一行。
3、vs版本的可以使用windeploy调试mp文件。
qt是一个跨平台的C++开发库。Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程

4. qt5.10在debug时,出现could not find qtWebEngineProcessed.exe(确认该文件是存在的),release时正常

qt 程序在编译的时候,会在输出目录下自动生成一个文件夹, 如下:
e:/build-untitled-Desktop_Qt_5_10_1_MSVC2015_32bit-Debug/
e:/build-untitled-Desktop_Qt_5_10_1_MSVC2015_32bit-Release/
具体名称因编译环境不同而异,但结构相同,注意看最后一段,-Debug -Release , 你注意对比下两个目录中文件的差异。仍可能缺少相应的支持文件

5. QT的代码编译没错,但是debug模式下会异常终止,在release模式下就没问题,请问是什么情况

qt代码在release模式下编译之后,会偶先题目所述现象,但是debug模式下确没事,单独运行release文件夹中的exe也可以,唯独在qtcreator中运行时不行,网络之后的答案基本是环境问题,巴拉巴拉,但是他也没说具体是什么环境问题,这叫我怎么排查?!

不过就在刚刚我又出现了这个问题,这种问题一般出现在如下情况:

1、添加一些新的模块或代码中需要新的qt的dll库等;

2、把别人的代码拉倒本地后再编译(别人的库包括上一条所述的内容);

qt的release模式是需要单独去寻找dll或相关链接库的,如果它自己找不到,就会爆出标题所述的内容,此时你可以检查你的环境(但是就像我之前说的,我也不知道我要检查什么环境!),另外一种有效的做法就是呢:

安装qt后会随着按照一个命令行工具(和windows自带的CMD类似),叫做 Qt 5.7 for Desktop (MinGW 5.3.0 32bit),在开始目录里打开这个工具,如下图:


在命令行中进入到,编译后的exe存放的目录中,然后输入命令:

windeployqt xxx.exe

其中xxx.exe就是你生成的exe名称,这条命令会把exe相关的内容解析出来,你会在文件夹中看到很多qt的相关dll,这些都是依赖性,有了这些依赖项之后,再返回运行qt creator就能成功运行啦~~~~

当然了,这种方式也适用于对应用打包,把exe单独放到一个文件夹,运行上述命令,这个文件夹就可以在没有qt的环境的电脑中运行了。

6. QT编译错误,怎么解决

项目->构建设置,把中文路径改为英文路径 ,记得清理之后再重新构建哦

7. 为什么我用Qt5.6编译出的debug与release程序在不同的目

这个十分简单, 如果我理解的没有错的话, 你应该是在新建项目时没有添加Release对象吧?
1. 点击左侧边栏的Projects
2. 在Build Step里的qmake build configuration中选择Release
此时你编译出来的对象就是release的了...
如果是要上交的内容, 更改下build directory, 就OK了

如果你是在Shell下的话... qmake加参数 "-CONFIG+=Release(或者Debug)"

8. qt如何把debug编译成release版本

这个十分简单, 如果我理解的没有错的话, 你应该是在新建项目时没有添加Release对象吧?
1. 点击左侧边栏的Projects
2. 在Build Step里的qmake build configuration中选择Release
此时你编译出来的对象就是release的了...
如果是要上交的内容, 更改下build directory, 就OK了

如果你是在Shell下的话... qmake加参数 "-CONFIG+=Release(或者Debug)"

9. 使用vs2013编译qt工程,qdebug出的中文变成这样了

qDebug() <<QObject::tr("好多");
这样用就可以不出乱码了。
直接写 qDebug()<<"好多";的话我也是乱码
差点忘了。我这边编码方式是"utf-8".即
QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));
确切地说是工具-》选项-》文件编码里的默认编码要支持中文的。然后写成一致的就不会乱码了。请给分。谢谢

10. qt4.8.5build debug libraries 编译有什么用

QT Debug大集合 详细讲解是本文要介绍的内容,相信友们应该在编程过程中遇到各种各样的Debug,先来看内容。QT Debug集锦~ 这篇是在10年测试QT 过程中遇到的问题:
1、中文显示问题:
#include <QApplication> #include <QLabel> #include <QTextCodec> int main(int argc, char* argv[]) { QApplication app(argc,argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QLabel *label = new QLabel(tr("这里是中文")); label->Show(); return app.exec(); }

编译代码,得到的错误是: 'tr'在此作用域中尚未声明。
昨天为什么没有出现这种错误呢?因为昨天的代码是从qt creator生成的MainWindow中挑出来的,tr被声明为QObject的一个static方法,因此在MainWindow中使用tr不会有问题。
把上面的QLabel *label=new QLabel(tr("这里是中文"));
改为
QLabel *label=new QLabel(QObject::tr("这里是中文"));
2、中文问题:
使用sqlite数据库显示乱码的问题
本人近日在使用QT进行sqlite数据库编程时,出现中文数据显示乱码情况,附源码如下:

//main.cpp #include <QtGui> #include <QtCore/QTextCodec> #include <QSqlTableModel> #include <QTableView> #include <QHeaderView> #include <QSqlRecord> #include <QtGui/QLabel> #include <QString> #include <QVariant> #include "connection.h" #include "sql.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK")); //创建数据库连接 if (!createConnection()) return 1; //创建学生信息表 createTables(); //初始添加数据 addData(); enum{ Student_Id = 0, Student_Schnum = 1, Student_Name = 2, Student_Sex = 3, Student_Nation = 4 }; QSqlTableModel *model = new QSqlTableModel(); model->setTable("student"); model->setSort(Student_Schnum, Qt::AscendingOrder); model->setHeaderData(Student_Schnum, Qt::Horizontal, QObject::tr("学号")); model->setHeaderData(Student_Name, Qt::Horizontal, QObject::tr("姓名")); model->setHeaderData(Student_Sex, Qt::Horizontal, QObject::tr("性别")); model->setHeaderData(Student_Nation, Qt::Horizontal, QObject::tr("民族")); model->select(); QTableView *view = new QTableView; view->setModel(model); view->setSelectionMode(QAbstractItemView::SingleSelection); view->setSelectionBehavior(QAbstractItemView::SelectRows); view->setColumnHidden(Student_Id, true); view->resizeColumnsToContents(); view->setEditTriggers(QAbstractItemView::NoEditTriggers); QHeaderView *header = view->horizontalHeader(); header->setStretchLastSection(true); view->show(); return a.exec(); } //connection.h #ifndef CONNECTION_H #define CONNECTION_H #include <QMessageBox> #include <QSqlDatabase> #include <QSqlError> #include <QSqlDriver> inline bool createConnection() { QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("sim.dat"); if (!db.open()) { QMessageBox::warning(0, QObject::tr("Database Error"), db.lastError().text()); return false; } return true; } #endif // CONNECTION_H //sql.h #include <QSqlQuery> #ifndef SQL_H #define SQL_H inline void createTables() { QSqlQuery query; query.exec("CREATE TABLE student (" "id INTEGER PRIMARY KEY, " "schnum INTEGER NOT NULL, " "name VARCHAR(40) NOT NULL, " "sex VARCHAR(4) NOT NULL, " "nation VARCHAR(10) NOT NULL)"); } inline void addData(){ QSqlQuery query; for(int i =0;i<100;i++){ query.exec("INSERT INTO student (schnum, name, sex, nation) VALUES (2614103, '天残脚,'男', '汉族')"); } } #endif // SQL_H

上网查了许多无果,后来在阅读一篇技术文章中无意发现,原来在插入数据语句若有中文必须先QObject::tr()一番,即进行编码,
将 Sql.h 中 query.exec("INSERT INTO student (schnum, name, sex, nation) VALUES (2614103, '天残脚,'男', '汉族')"); 改为如下 query.exec(QObject::tr("INSERT INTO student (schnum, name, sex, nation) VALUES (2614103, '天残脚,'男', '汉族')"));

结果在显示中都能得正确显示。
注意,如果语句 QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));中的编码改为utf-8则会显示乱码。
3、中文问题:
如果使程序只支持一种编码,也可以直接把整个应用程序的编码设置为GBK编码, 然后在字符串之前 加
tr(QObject::tr), qApp->setDefaultCodec( QTextCodec::codecForName("GBK") ); QLabel *label = new QLabel( tr("中文标签") );

4、找不到<QtSql >
求助:提示无法打开包含文件QtSql
.Pro文件里加入 QT += sql
4、No rule to make target 'mkspecs/default/qmake.conf', needed by `Makefile'. Stop. 错误
mingw32-make: *** No rule to make target `http://www.cnblogs.com/http://www.cnblogs.com/Qt/4.3.3/mkspecs/default/qmake.conf', needed by `makefile'. Stop. make[2]: Entering directory `/home/lzy/tps2/rplan/super' make[2]: *** No rule to make target `/home/lzy/qt/qt-3.3.2/mkspecs/default/qmake.conf', needed by `Makefile'. Stop. make[2]: Leaving directory `/home/lzy/tps2/rplan/super'

5、mingw32\bin\ld.exe: cannot find -lqtmaind错误
这个错误是缺少某些库,将mingw重新下载安装即可。
6、编译时可能会遇到如下错误:previous declaration 'long int InterlockedIncrement(long int*)' here
此为qt的bug需要修改源代码 (Qt\4.4.3\src\corelib\arch\qatomic_windows.h),原文件如下:
Solution:
(1) Qt\4.4.3\src\corelib\arch\qatomic_windows.h:
#if !(defined Q_CC_BOR) || (__BORLANDC__ < 0x560) extern "C" { __declspec(dllimport) long __stdcall InterlockedCompareExchange(long *, long, long); __declspec(dllimport) long __stdcall InterlockedIncrement(long *); __declspec(dllimport) long __stdcall InterlockedDecrement(long *); __declspec(dllimport) long __stdcall InterlockedExchange(long *, long); __declspec(dllimport) long __stdcall InterlockedExchangeAdd(long *, long); } #else extern "C" { __declspec(dllimport) long __stdcall InterlockedCompareExchange(long volatile*, long, long); __declspec(dllimport) long __stdcall InterlockedIncrement(long volatile*); __declspec(dllimport) long __stdcall InterlockedDecrement(long volatile*); __declspec(dllimport) long __stdcall InterlockedExchange(long volatile*, long); __declspec(dllimport) long __stdcall InterlockedExchangeAdd(long volatile*, long); } #endif you will see above code in Qt\4.4.3\src\corelib\arch\qatomic_windows.h: file. I modified like below and it works. /*#if !(defined Q_CC_BOR) || (__BORLANDC__ < 0x560) extern "C" { __declspec(dllimport) long __stdcall InterlockedCompareExchange(long *, long, long); __declspec(dllimport) long __stdcall InterlockedIncrement(long *); __declspec(dllimport) long __stdcall InterlockedDecrement(long *); __declspec(dllimport) long __stdcall InterlockedExchange(long *, long); __declspec(dllimport) long __stdcall InterlockedExchangeAdd(long *, long); } #else */ extern "C" { __declspec(dllimport) long __stdcall InterlockedCompareExchange(long volatile*, long, long); __declspec(dllimport) long __stdcall InterlockedIncrement(long volatile*); __declspec(dllimport) long __stdcall InterlockedDecrement(long volatile*); __declspec(dllimport) long __stdcall InterlockedExchange(long volatile*, long); __declspec(dllimport) long __stdcall InterlockedExchangeAdd(long volatile*, long); } // #endif

7、编译错误,显示 can not find -lqtmaind。
这是qt的debug库,安装完成后需要再自己编译这个库。在Qt的开始菜单中,你可以找到一个程序 Qt 4.4.0 (Build Debug Libraries),运行这个程序就能编译Qt的Debug库了。
小结:QT debug大集合 详细讲解的内容介绍完了,希望本文对你有搜帮助。

热点内容
app什么情况下找不到服务器 发布:2025-05-12 15:46:25 浏览:714
php跳过if 发布:2025-05-12 15:34:29 浏览:467
不定时算法 发布:2025-05-12 15:30:16 浏览:131
c语言延时1ms程序 发布:2025-05-12 15:01:30 浏览:166
动物园灵长类动物配置什么植物 发布:2025-05-12 14:49:59 浏览:737
wifi密码设置什么好 发布:2025-05-12 14:49:17 浏览:149
三位数乘两位数速算法 发布:2025-05-12 13:05:48 浏览:399
暴风影音缓存在哪里 发布:2025-05-12 12:42:03 浏览:544
access数据库exe 发布:2025-05-12 12:39:04 浏览:632
五开的配置是什么 发布:2025-05-12 12:36:37 浏览:366