Qt程序 windows环境长时间运行,界面卡顿,需要重启操作系统

疯魔症 2018-01-19 10:09:57
Qt4.8开发的软件,只在windows跑,在用户环境出现几次卡顿不响应的现象,重启软件仍然卡顿不响应,重启操作系统后软件正常。

先说下软件,软件是需要长时间运行的,设计一些数据采集,曲线列表等等的界面,我的开发环境很稳定,用户的环境中跑也很稳定,CPU稳定在10%左右,内存一百多M。但是呢出现了几次情况。

我本地的开发环境,win10,Qt4.8 for vs2008,Qt Creator

第一种现象,用户的几台计算经win8,win10,win7,平时跑都正常,有一次出现界面卡顿点击不响应,重启软件也不管用,由于用户计算机重来不关闭(几个月),我要求用户重启计算机,重启后软件正常,我的解释是,windows本身不稳定,长时间跑图形界面软件需要定期重启。

第二个现象,最近用户部署一台新的计算机,win7,启动软件点击鼠标只有几个控件会响应,具体现象:例如点击按钮,只有个别按钮响应点击,例如QTabWidget,点击tab也没响应,软件中使用了多个QTabWidget,软件重启也不行,每次重启软件后响应的按钮也不同;我做了一些尝试,软件启动后,使用它tab键,可以切换不同按钮的焦点,可以切换QTabWidget的tab焦点;另一个尝试,我编译了一个简单的Qt程序,只有一个QTabWidget控件,几个按钮几个editLabel,也有同一样的现象,鼠标点击不能都响应,tab键可以切换各控件的焦点。

请教下这两个现象怎么解释,万分感谢
...全文
1585 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯魔症 2018-01-31
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏! 搜“GDI泄露检测”
谢谢大神,查了程序申请的内核资源,不正确释放的话,程序退出后操作系统不会收回,导致内核资源泄露,累计的多了最终肯定要重启计算机了。 我的方向定位到内核资源泄露,按找这个方向查
疯魔症 2018-01-27
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏! 搜“GDI泄露检测”
做了一些测试,是不是可以说明有句柄泄露,导致最终必须重启操作系统
疯魔症 2018-01-26
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏! 搜“GDI泄露检测”
请教下GDI泄露的话,是不是进程退出也不行,必须重启操作系统么
worldy 2018-01-23
  • 打赏
  • 举报
回复
重启后可以,有很大的可能性进入死循环。或者内存泄露造成需要进行磁盘交换的操作,严重影响程序运行
zgl7903 2018-01-23
  • 打赏
  • 举报
回复
内存泄漏或GDI资源泄漏的可能性很大
Eleven 2018-01-22
  • 打赏
  • 举报
回复
内存泄漏或者GDI资源泄露?把任务管理器窗口打开看看~
赵4老师 2018-01-22
  • 打赏
  • 举报
回复
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏! 搜“GDI泄露检测”
疯魔症 2018-01-20
  • 打赏
  • 举报
回复
谢谢回复,windows内核对象我没什么概念,还请对指导下; 说是卡顿可能不太准确,根据现象“点击按钮,只有个别按钮响应点击...使用tab键,可以切换不同按钮的焦点”,其实不像是主线程耗时之类的,更像是软件对鼠标响应不准确。 另外卡顿时CPU很低的,软件CPU基本0%的样子,整个系统CPU,内存都很低。 我想Qt的一些原理和windows的一些原理有什么冲突,导致Qt软件长运行,将windows的某些内容耗尽,然后必须重启操作系统。
引用 2 楼 smwhotjay 的回复:
重启软件仍然卡顿不响应,重启操作系统后软件正常。 软件有点糟糕了。。。 个人感觉是内核对象 耗尽的感觉, 卡顿不响应,要查看cpu% 是否过高,是,则考虑有死循环的bug了。可以把软件打log,看卡死最后哪一部分 重启也不行,说明不是死循环的可能性。
smwhotjay 2018-01-20
  • 打赏
  • 举报
回复
重启软件仍然卡顿不响应,重启操作系统后软件正常。 软件有点糟糕了。。。 个人感觉是内核对象 耗尽的感觉, 卡顿不响应,要查看cpu% 是否过高,是,则考虑有死循环的bug了。可以把软件打log,看卡死最后哪一部分 重启也不行,说明不是死循环的可能性。
疯魔症 2018-01-19
  • 打赏
  • 举报
回复
几个说明 1.这里两个现象出现时,操作其它软件是正常的,例如浏览器、word等,只是我的软件不响应重启也不行,必须重启操作系统; 2.还没有进行的测试,出现问题时,操作其它Qt编写的软件有没有问题(非我编写发布的软件);

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧