
今天上午起来尝试了下基于QtCreator的QGIS二次开发程序的Debug版,编译没问题,但调试运行时出错了,d出了一个错误对话框“The GDB Process Terminated”!
百度了下,找到一个同样问题的帖子:亩码
按照它的步骤解决问题时,发现我系统里就没有“environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi”这个文件!
然后,又找了N多帖子,都是只言片语,各种不同的解决方案,对于我来说都是无效的!
于是,我就自行研究起来,看了下QtCreator中的设置,发现我的gdb设置的就是/usr/bin/gdb,路径没错,gdb也存在,但就是运行错误!
琢磨了一会,突然想到了什么!没错,我运行QtCreator时并不是以管理员权限运行的,所以没法运行系统目录下的gdb,当然运行不起来!
于是,sudo QtCreator,起来后,加载工程,点击调试按钮!
错误消失了,可以设置断点,并调试迅凳哪了!
所以,遇到问题,不要着急,可以先百度查找粗兄下,因为我们遇到的问题,别人很有可能已经解决过了,没必要花时间去研究的,如果没有解决方案,那就自己研究,方法总比苦难多,多多尝试,定能解决问题,解决之后你就是第一人了!
一起加油,一起成为优秀的GIS程序员!
1. “用Qt写的程序编译比MFC慢”的说法是错误的绝对错误,单位代码行数编译Qt远比MFC快得多,因为Qt库的头文件设计非常好,尽量都使用了前置声明,避免了头文件嵌套,几乎亏空所有类都使用了公有类和私有类的设计,把没必要公开的声明放到私有头文件里,避免了编译时引入过多代码。而MFC没有这样的设计。
至于大家感觉MFC快主要原因是MFC工程默认打开了编译预处理头文件(PCH),但是这是VC编译器的特性,所有C++程序都可以用,不是MFC特有,Qt也可以使用 PCH
方法很简单,在你的 .pro 文件中加入一行
PRECOMPILED_HEADER = stable.h
指定 Stable.h这个头文件作为编译预处理文件,MFC里这个文件一般叫stdafx.h
然后在 stable.h里 包含你所用到的所有销手瞎 Qt 头文件,如果你用了很多qt的类可以直接包含所有
比如 :
#include <QtCore>
#include <QtGui>
这两个文件里又包含了几乎所有Qt常用类
不用担心,即使包含了所有头文件也没关系,有了PCH再多头文件也没影响。
如果你还想编译再快点,可以在 .pro里加入下面一行
QMAKE_CXXFLAGS += /MP
指定/mp编译选项,编译器将使用并行编译,同时薯团起多个编译进程并行编译不同的cpp
而且QT这种引入PCH的方法比MFC的好,由于MFC的PCH选项是每个工程逐个指定的,很容易被某些人搞坏,我曾经无数次修复PCH问题,但是Qt的选项是写在.pro里的,写一次就永远不会错。
MFC一旦弄坏了PCH,编译也慢得令人发指。
给个参考时间吧,YY最新版本大约 100多万行C++代码,rebuild debug和releae总共需要20多分钟,机器是i5 四核SSD硬盘。其实对于大项目硬盘才是瓶颈,如果换机械硬盘要慢差不多70%,有个同事用10G内存做了个内存盘编译,还能快30%。
if gdb, on the command console:set follow-fork-mode mode
Set the debugger response to a program call of fork or vfork. A call to fork or vfork creates a new process. The mode argument can be:
parent
The original process is debugged after a fork. The child process runs unimpeded. This is the default.
child
The new process is debugged after a fork. The parent process runs unimpeded.
if QT creator:
Go to Tools >Options >Debugging >GDB Extended and select Debug all children
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)