Qt Creator 1.3.0加载项目文件停止响应的研究

本文详细介绍了在使用Qt Creator 1.3.0时遇到项目文件加载导致程序停止响应的问题,通过调试源码发现是`Qt4UiCodeModelSupport::runUic`函数中进程输入输出流导致的死锁。作者提出通过修改代码,使用文件方式执行uic.exe来避免死锁,实现了问题的解决。经过修改后的Qt Creator能成功加载原先无法打开的项目。
摘要由CSDN通过智能技术生成

转载时请注明出处和作者联系方式
作者联系方式:Lutx
80437@zj.com

 

 

在Qt 4.6.0和Qt Creator 1.3.0正式发布不久后, 就将原来的Qt开发平台升级到新的平台上来了. 安装的是Qt 4.6.0 msvc版本, 而且在Qt Creator中也可以用MSVC的编译器来编译程序, 使用了一个jom.exe的工具[http://labs.trolltech.com/blogs/2009/03/27/speeding-up-visual-c-qt-builds/], 那编译速度比Visual Studio快的多了. 用了没多久出来一个问题:

 

用Qt Creator 1.3.0打开以前创建的一个项目文件, 发现Qt Creato就停止响应了, 根本无法加载这个项目. 真郁闷, 难道又回到Visual Studio去吗? 还是去Qt Creator的源码中找找原因吧, 看看能不能解决.

 

1. 编译生成 Qt Creator

    首先从qt网站下载Qt Creator 1.3的源码包, 解压到本地目录(不同于安装的Creator目录以免混淆)下. 用已安装的Qt Creator打开源代码包根目录下的qtcreator.pro项目,  因为需要调试, 设置Build Configuration为Debug模式, 然后Build All生成整个项目. 生成后会在/bin目录下以及/lib/qtcreator/plugins/Nokia目录下生成一组exe和dll文件.

 

2. 调试查找原因

    在Projects页面的第一个选择项Active run configuration中选择"app", [这个不选择则无法启动qtcreator.exe来调试, 默认会是bin.exe, 实际根本没有这个文件], 启动调试程序运行重新编译的qtcreator.exe, 打开刚才那个无法加载的项目文件...... 经过十几次的断点重复调试运行, 找到了导致无响应的程序位置在/src/plugins/qt4projectmanager/qtuicodemodelsupport.cpp中Qt4UiCodeModelSupport::runUic(const QString &ui) const这个函数中. 原始代码为:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值