首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏24K纯开源

    Qt程序继承QApplication发生崩溃的原因

    但是最近遇到的一个Qt程序崩溃的问题,却不得不让我对QApplication的两个参数提高了警惕。 编译运行很开心,程序完全满足了我们的要求。但是程序发布出去给用户使用的时候,我们在后台的崩溃上报系统中看到了一个这样的崩溃堆栈: ? 很明显程序在QCoreApplication的arguments()方法中崩溃了。这个崩溃堆栈让我们不由得浮想联翩:难道这个是Qt框架本身的Bug?不小心被我给踩到了? 这个用户说的很详细,QApplication的构造函数中argc必须为引用传值方式,否则程序崩溃!然而Qt官方文档并没有强调这一点,导致很多用户根本没在意到这一点。 msg/mathgl/CVvVyRnl3X4/EPiRrnqy3moJ 3. https://stackoverflow.com/questions/22243674/segmentation-fault-when-qt-qapplication-created-with-new

    2.9K30发布于 2019-07-02
  • 英特尔驱动导致Qt程序必定崩溃

    背景用户反馈Qt程序启动即必现崩溃,用户环境为Dell笔记本电脑,具有英特尔&英伟达双显卡,win10 64位分析首先崩溃后,需要对用户提供的dmp文件进行分析dmp分析打开用户提供的dmp文件,发现栈帧被破坏导致堆栈无法正常显示这里需要手动还原堆栈 QDirect3D9Handle::QDirect3D9Handle+0x72 [C:\Users\qt\work\qt\qtbase\src\plugins\platforms\windows\qwindowsopengltester.cpp QWindow::create+0xc [C:\Users\qt\work\qt\qtbase\src\gui\kernel\qwindow.cpp @ 651] 可以发现创建第一个窗口,qt会去加载d3d9 ,这里是要去推测是否有多屏场景,需要出现在主屏,主要是为了解决多屏多显卡场景下的崩溃问题:QTBUG-50371接着往下就会去遍历每个显示器,利用d3d的接口来实现,需要加载d3d9.dll创建d3d9 :英特尔-WPF应用崩溃、英特尔-QT崩溃、英特尔-D3d崩溃基本上回复都是升级驱动版本,回滚驱动版本等操作修复问题,但是现网观测不仅仅英特尔驱动会导致我们崩溃,英伟达、AMD显卡模块同样会有问题,所以这里考虑屏蔽驱动模块的加载来解决问题

    1.3K30编辑于 2024-08-14
  • 来自专栏linux运维

    应用程序崩溃

    应用程序崩溃是一个常见的问题,可能是由多种原因引起的,包括内存泄漏、资源耗尽、代码错误等。以下是一些诊断和解决应用程序崩溃的方法:1. 检查日志文件首先,查看应用程序的日志文件,了解崩溃的具体原因。 示例命令:dmesg | tail3. 使用 strace 追踪系统调用strace 是一个强大的工具,可以追踪应用程序的系统调用和信号。这有助于发现导致崩溃的具体操作。 如果应用程序已经崩溃,可以使用 -c 选项来启动应用程序并追踪其系统调用:strace -o strace.out -c ./your_application 4. 使用 gdb 调试应用程序gdb 是一个强大的调试工具,可以帮助您定位和修复应用程序崩溃问题。 分析核心转储文件如果应用程序崩溃时生成了核心转储文件(core dump),可以使用 gdb 分析这些文件。

    2.3K00编辑于 2025-02-03
  • 来自专栏韩曙亮的移动开发专栏

    QtQt 开发桌面程序 ( Qt 版本 5.14.2 | 创建 Qt 桌面程序 | 构建并运行 Qt 桌面程序 )

    文章目录 一、创建 Qt 桌面程序 二、构建并运行 Qt 桌面程序 一、创建 Qt 桌面程序 ---- 首先要安装 Qt 开发环境 , 参考 【QtQt 开发环境安装 ( Qt 版本 5.14.2 | Qt 下载 | Qt 安装 ) 博客 ; 打开 Qt Creator 开发环境 , 选择 " 菜单栏 / File / 新建文件或项目 ( N ) " , 在弹出的 " New File or Project - Qt Creator " 对话框中 , 选择左侧 Application 选项卡 , 选择 " Qt Widgets Application " 应用 , 然后点击 " Choose " 按钮 , 桌面程序框架 ; 二、构建并运行 Qt 桌面程序 ---- 点击左下角的电脑图标 , 在弹出的对话框中配置一个构建套件 , 选择构建套件 : 构建好的应用变成如下样式 , 点击左下角的绿色三角形按钮 , 即可运行该 Qt 桌面程序 , 运行效果如下 :

    5.8K40编辑于 2023-03-29
  • 来自专栏【计网】Cisco

    程序崩溃与优化

    程序崩溃 程序崩溃是指计算机程序在运行时出现了严重的错误或异常情况,导致程序无法正常运行并突然终止。 1.1 程序崩溃出现场景 内存溢出: 在C程序中,内存分配通常由函数如malloc来完成。 如果程序未提供适当的异常处理机制,如使用try-catch块来捕获异常,程序可能会崩溃。在C中,除以零通常会导致程序终止,并且没有捕获异常的机制。 这将导致程序一直运行下去,直到它被手动终止或操作系统干预。 #include <stdio.h> #include <stdlib.h> int main() { // 3. 这将导致未定义行为,通常会导致程序崩溃。 #include <stdio.h> #include <stdlib.h> int main() { // 5. 未处理的异常 int a = 10, b = 0; int result = a / b; // 除以零,会引发异常 // 3.

    1.4K10编辑于 2024-02-20
  • 来自专栏一个程序员的修炼之路

    Windbg分析程序崩溃实践

    刚刚熟悉完产品的小木,接到了后台服务的报警,服务器后端偶尔会程序崩溃。刚开始小木还有点慌张,脑子里面浮现出各种问题,这个是程序的bug吗?茫茫的代码如何寻找问题?log能看到线索吗? 小木将程序dump拷贝到了自己的办公机器上,准备用预先安装好的Windbg64位进行分析。 3. Windbg分析 小木根据之前学习的内容,先用Windbg 加载dump。 3.2 寻找程序崩溃的代码 加载完symbols后,我们来看下程序调用栈: 0:000> k # Child-SP RetAddr Call Site 00 RtlUserThreadStart+0x21 小木松了一口气,终于有点线索了,程序崩溃在函数LogStr,根据里面的行数提示,找到那段代码: void LogStr(std::string strContent ) { fprintf(stdout, strContent.c_str()); } 刚松了一口气,小木又疑惑起来,这个函数是用来打印博客标题的log的,一直都用,也测试过,怎么会偶尔导致程序崩溃

    1.8K30发布于 2021-08-06
  • 来自专栏过千帆博客

    async void 导致程序崩溃

    直到这天看到了这篇博客:在 ASP.NET Core 中誤用 async void 竟引發了 502(Bad Gateway),说async void里出现异常时会导致程序崩溃。 异常被捕获处理了,async void方法执行无异常,不会导致程序崩溃。 出现异常时能导致崩溃的代码有2种,如下: [HttpGet] public async void Get() { //异常会导致程序崩溃 throw new Exception("ex 因为async void里面没有异常,自然就不会导致程序崩溃。 因为async void在执行时没有异常,自然就不会导致程序崩溃。 但是由于我们不能保证所有代码都没有异常,所以不要使用async void!

    1.5K20编辑于 2022-04-23
  • 来自专栏全栈程序员必看

    TerminateThread可能导致程序崩溃

    (未释放堆分配锁,造成死锁) 3 If the target thread is executing certain kernel32 calls when it is terminated, the (在执行内核函数时退出,造成该线程所在进程状态不确定,程序可能崩溃) 4 If the target thread is manipulating the global state of a shared (在使用DLL时退出,造成DLL被销毁,其他使用该DLL得程序可能出现问题!) 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/227266.html原文链接:https://javaforall.cn

    1.3K10编辑于 2022-11-15
  • 来自专栏向治洪

    android程序崩溃后重启

    有时候由于测试不充分或者程序潜在的问题而导致程序异常崩溃,这个是令人无法接受的,在android中怎样捕获程序的异常崩溃,然后进行一些必要的处理或重新启动 应用这个问题困恼了我很久,今天终于解决了该问题 首先捕获程序崩溃的异常就必须了解一下java中UncaughtExceptionHandler这个接口,android沿用了此接口,在android API中: ?                     Intent.FLAG_ACTIVITY_NEW_TASK);                                                  //退出程序                 Looper.prepare();                     Toast.makeText(application.getApplicationContext(), "很抱歉,程序出现异常 ArrayList<Activity> list = new ArrayList<Activity>();   public void init(){   //设置该CrashHandler为程序的默认处理器

    3.3K70发布于 2018-01-30
  • 来自专栏繁花云

    Qt程序打包

    如果使用动态链接编译Qt,移植到其他系统上需要库文件,下面讲解如何解决这一问题 设置qt环境变量后,在cmd中执行 windeployqt 可执行文件名 这样qt就会自动把依赖拷贝出来,然后我们安装软件

    1.9K00发布于 2018-07-31
  • 来自专栏Yui编程知识

    Qt】HelloWorld程序

    这就不得不追述到Qt诞生的时间,Qt诞生于1991年,那时C++还没有形成标准呢,我们所熟知最早的C++标准也是在1998年形成的C++98。 既然没有标准,那么Qt为了让自己的开发变得更流程,就自己发明了一套轮子。搞了一系列得基础类,在支持Qt得开发。 ,因此,我们在开发Qt代码的时候,如果需要用到上书容器,可以使用标准库的容器,也可以使用Qt自己创建的容器。 3. Qt中也存在类似对象树把各种元素给组织起来。 注意: 如果我们对象改为栈上创建,此时就可以看到运行去了的程序无法显示HelloWorld,此时label对象随着析构函数的结束,就销毁掉了。

    50800编辑于 2025-02-27
  • 来自专栏python3

    QT qt 3d 绘图

    qt 3d 绘图 首先不得不说,要感谢北京邮电大学的阿科。感谢他慷慨的分享和极具科学态度的记录,将自己搜集到的众多资料收集整理发布,拯救众多苦逼寻找方案的程序员于苦海之中。 ) 2 Sapphire-3D-Surfaces(http://qt-apps.org/content/show.php/Sapphire+3D+Surfaces? content=118944) 注意这里我使用的开发环境是Qt,语言为C++。 第二个下载源代码,再win7的Qt Creator一下就编译通过了。 3、打开C:\qwtplot3d-0.2.7\qwtplot3d,将会看到qwtplot3d.pro文件。            自带的Demo程序

    1.7K20发布于 2020-01-08
  • 来自专栏Coding十日谈

    3分钟教会你如何发布Qt程序

    导读:Qt程序编写好以后该如何发布。本文教你使用Qt自带工具windeployqt来进行操作。 本文字数:500,阅读时长大约:3分钟 (1)编写一个简单的程序 我们先做一个简单的窗口,添加一个图片资源文件,放置到窗口当中。 选择添加Qt Resource File文件类型 ? 因为.exe文件对其他文件有依赖关系,可以使用windeployqt解决,发布一套完整的程序及其依赖的库文件。 (3)使用windeployqt发布程序 将myTest.exe复制到要发布的文件夹下,比如D:\myTest\下 ? 在开始菜单中找到Qt cmd 工具,打开 ? windeployqt会帮我们解决文件依赖关系,程序需要的库文件都生成在了文件夹中,并且资源文件也被编译到了二进制文件里。 ? 这次再运行myTest.exe,可以看到结果正常,发布结束。 ?

    1.1K10发布于 2020-08-26
  • 来自专栏谭广健的专栏

    安卓程序崩溃错误捕捉

    在开发安卓程序时,本地测试没任何问题,但去到客户处不是这里麻烦就是哪里不行。最后还来个程序崩溃。。 最令人头疼的就是崩溃,因为程序崩溃总是悄然无息的,有时候根本都没办法进行复现处理,,经过一段的摸索后,总算发现安卓有个程序崩溃前的接口(CrashHandler)在崩溃前会执行,这样就能很好的捕获到错误了 Context ctx) { Thread.setDefaultUncaughtExceptionHandler(this); } /** * 核心方法,当程序

    1.9K31发布于 2019-11-13
  • 来自专栏云头条

    3 名程序员被开除:因一次 APP 崩溃。。。

    但他总是派给我们一大堆的工作,就连高级程序员也很难在一周内完成这些工作。 我们没有高级程序员,我们都是初级程序员。公司没有测试员,没有设计师。 应用程序崩溃 后来有一天,CEO要求搞一个需要在一个半月内完成的新项目:一个移动应用程序和一个用于构建定制交付平台的互联网平台。 起初的目标是,建立一个原型,拿给潜在投资者看,以筹集资金。 该应用程序向投资人展示时在移动设备上崩溃了,因一个文本字段而崩溃。该文本字段要求输入数字,但CEO结果输入的却是数字和字符。 当用户从移动前端将字符串数据而不是数字数据推送到Firestore时,应用程序崩溃了。 投资被拒绝,我们成了背锅侠 结果投资人拒绝了投资。当然,在我看来,第一个错误出在CTO的身上。 在向投资人展示该应用程序之前,他甚至试都没试过。他本该做好充分的准备,因为每个应用程序都有bug。而且如果你在一个半月内开发出一个项目,又没有进行测试,就会有很多bug。

    2.8K20编辑于 2022-03-18
  • 来自专栏全栈程序员必看

    Qt实现抽奖程序

    一、简介 该程序命名为Lucky,实现的功能如下: 1. 加载抽奖人员名单,并保存加载路径; 2. 3. 单击左键或者点击ctrl+s停止抽奖,并固定显示中奖人员名单。 工具:Qt5.13 + msvc2015 二、界面显示 ①:滚动显示名单 ②:抽奖开始/停止显示 ③:名单路径及加载按钮 三、详解 抽奖程序,简单来说,需要有人员名单+抽奖功能,至于奖品,本程序未实现显示奖品的功能 ,只是一个简易的抽奖小程序。 (); } } } 2.滚动名单每隔一定时间显示,需要使用Qt的定时器QTimer类实现。

    3.1K30编辑于 2022-09-07
  • 来自专栏python3

    Qt+sqlite3

    所以暂时先用sqlite3插件的方法完成任务再说,希望有用QT做数据库的大牛们帮忙看看问题所在,也随便记录一下sqlite3插件的方法。 一、QT编译数据库问题:  1、根文件系统:友善提供的源代码,去掉qtopia之后的qt4部分  2、问题现象    : QSqlDatabasedb=QSqlDatabase::addDatabase 二、QT+sqlite3 先说一下QT自带数据库和sqlite3的区别,他们的功能是一样的,但是代码就不一样了。 QT对数据库具有完善的支持,不需要加任何其他插件就可以直接使用,但是如果你要是加了sqlite3插件,调用数据库就跟直接调用一个驱动一样,直接调用接口函数:open、close、……,换言之QT自带的数据库语言就用不上了 3、移植sqlite3 在QTE的include文件中建立新文件夹sqlite3,将头文件放到里面;把库文件放到QTE的lib文件中 4、编程 (1) QT生成的.pro文件中添加库指令: LIBS +

    2.1K10发布于 2020-01-07
  • 来自专栏Java学习网

    Java异常处理:如何避免程序崩溃

    Java异常处理是保证程序运行时稳定性的重要手段。在程序开发过程中,我们可能会遇到许多异常情况,例如文件读写出错、网络连接中断等,如果不加以处理,就会导致程序崩溃或者数据丢失等问题。 二、 如何避免程序崩溃 1、合理使用try-catch-finally语句 try-catch-finally语句可以在程序内部捕获取所抛出的异常,进行相应的处理。 通过捕获异常,程序可以在异常情况下继续运行,并给出相应的提示,而不是直接崩溃。需注意的是,捕获异常和处理异常时需要充分考虑异常的具体信息,以避免抛出捕获异常后导致程序状态异常。 3、异常处理后的清理工作 在程序中,在finally块中执行必要的清理工作,例如关闭打开的文件、释放占用的资源等。这有助于避免异常导致的资源泄漏问题。 三、结论 在实际开发过程中,异常处理是保证程序稳定性的重要手段之一。为了避免程序崩溃,我们需要充分掌握异常处理的基础知识和技巧,并结合具体业务场景,选择合适的异常处理机制。

    1.1K10编辑于 2023-12-28
  • 来自专栏胖虎的研发之路

    捕获崩溃异常并重启程序,上传崩溃日志到服务器

    App的上线测试不可能囊括所有的错误,以及一些极端的情况可能考虑不到, 所以给App设置崩溃日志反馈是很有必要的,很多第三方都有做到,例如说腾讯的Bugly,友盟的统计等等,都可以实现到,但是如果仅仅是需要向服务器反馈崩溃日志的话 系统的API中给我们提供了一个可以捕获App异常的方法: Thread.setDefaultUncaughtExceptionHandler(restartHandler); // 程序崩溃时触发线程 以下用来捕获程序崩溃异常 所以我们就可以使用以上方法来解决反馈崩溃日志的需求,以下是具体代码: /** * 创建服务用于捕获崩溃异常 */ private static public void uncaughtException(Thread thread, Throwable ex) { restartApp(ex);//发生崩溃异常时 这里可以(进行某些操作,例如说上传信息) android.os.Process.killProcess(android.os.Process.myPid()); //结束进程之前可以把你程序的注销或者退出代码放在这段代码之前

    1.6K20编辑于 2023-05-10
  • 来自专栏全栈程序员必看

    C++Qt入门(1)—Qt简介,第一个Qt程序Qt按钮

    二、第一个Qt程序 1.路径名,文件名中不能有中文 2.创建默认窗口类 3.main函数 4.对.pro文件的解释 5.Qt Creator快捷键 6.QPushButton的创建 7.对象树(了解) Qt是一个跨平台的C++图形用户界面应用程序框架 2.Qt的发展史? 、第一个Qt程序 1.路径名,文件名中不能有中文 2.创建默认窗口类 基类有三种选择:QWidget,QMainWindow,QDialog 3.main函数 (1)QApplication a 应用程序对象 ,有且只有一个 (2)Widget w 实例化窗口对象 (3)w.show()调用show函数,显示窗口 (4)return a.exec() 让应用程序对象进入消息循环机制中,代码阻塞到当前行 (3)生成的.exe文件的名称 TARGET = HelloQT (4)模板,应用程序模板Application TEMPLATE = app (5)源文件,自动追加 SOURCES += \

    1.7K11编辑于 2022-08-29
领券