qt 崩溃处理

news2024/11/16 22:40:53

Windows系统MSVC编译器的dump文件

debug模式

生成exe自带生成pdb文件,所以无需处理。

1.生成dump文件

通过修改注册表,增加注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps 

具体见:利用vs 分析DMP文件、pdb文件定位release下的异常崩溃_小飞侠hello的博客-CSDN博客_dmp文件 用vs 查看

2.使用Windbg调试dump

a.配置Symbol file path(符号路径)、Source file path(源文件路径)、 Image File Path(可执行文件路径)。

b.执行命令  !analyze -v

符号路径:把生成的pdb文件所在目录及微软符号服务器加进去

源文件路径:源代码文件夹

可执行文件路径:可执行文件路径(这个选择具体的exe文件报错,只能选exe文件所在文件夹)

具体见:利用windbg分析程序崩溃生成的dmp文件_小飞侠hello的博客-CSDN博客_windbg分析dmp文件

Release模式

1.生成.pdb文件

release版本是不会自动生成pdb文件的。需要手动设置。

办法是:在pro文件中加入

QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO 
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO

2.其他步骤和debug一样

举例


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    int *pa = new int[2];
    int *p = nullptr;
    *p = 1;

}
WARNING: Minidump contains unknown stream type 0x15
WARNING: Minidump contains unknown stream type 0x16
WARNING: Non-directory path: 'D:\study\qt\qt\build-test-Desktop_Qt_5_12_0_MSVC2017_32bit-Release\release\test.exe'
WARNING: Non-directory path: 'D:\study\qt\qt\build-test-Desktop_Qt_5_12_0_MSVC2017_32bit-Release\release\test.pdb'
Symbol search path is: D:\study\qt\qt\build-test-Desktop_Qt_5_12_0_MSVC2017_32bit-Release\release\test.pdb
Executable search path is: D:\study\qt\qt\build-test-Desktop_Qt_5_12_0_MSVC2017_32bit-Release\release\test.exe
Windows 7 Version 17134 MP (8 procs) Free x86 compatible
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time: Fri Dec 30 15:45:10.000 2022 (UTC + 8:00)
System Uptime: 53 days 19:07:29.355
Process Uptime: 0 days 0:00:02.000
.................................................
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll - 
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(11bdc.3a04): Access violation - code c0000005 (first/second chance not available)
eax=00000000 ebx=00000000 ecx=00000008 edx=00000000 esi=00000003 edi=00000003
eip=7726adac esp=0113f318 ebp=0113f4a8 iopl=0         nv up ei pl nz na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000206
ntdll!NtWaitForMultipleObjects+0xc:
7726adac c21400          ret     14h
0:000> !analyze -v
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************

*** ERROR: Symbol file could not be found.  Defaulted to export symbols for kernel32.dll - 
***** OS symbols are WRONG. Please fix symbols to do analysis.

*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: ntdll!_PEB                                    ***
***                                                                   ***
*************************************************************************
*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: nt!IMAGE_NT_HEADERS32                         ***
***                                                                   ***
*************************************************************************
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ole32.dll - 
Failed calling InternetOpenUrl, GLE=12029

FAULTING_IP: 
test!MainWindow::MainWindow+54 [d:\study\qt\qt\test\mainwindow.cpp @ 8]
012410f4 c70001000000    mov     dword ptr [eax],1

EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 012410f4 (test!MainWindow::MainWindow+0x00000054)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000001
   Parameter[1]: 00000000
Attempt to write to address 00000000

PROCESS_NAME:  test.exe

ADDITIONAL_DEBUG_TEXT:  
Use '!findthebuild' command to search for the target build information.
If the build information is available, run '!findthebuild -s ; .reload' to set symbol path and load symbols.

MODULE_NAME: test

FAULTING_MODULE: 77200000 ntdll

DEBUG_FLR_IMAGE_TIMESTAMP:  63ae96ef

ERROR_CODE: (NTSTATUS) 0xc0000005 - 0x%p

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - 0x%p

EXCEPTION_PARAMETER1:  00000001

EXCEPTION_PARAMETER2:  00000000

WRITE_ADDRESS:  00000000 

FOLLOWUP_IP: 
test!MainWindow::MainWindow+54 [d:\study\qt\qt\test\mainwindow.cpp @ 8]
012410f4 c70001000000    mov     dword ptr [eax],1

MOD_LIST: <ANALYSIS/>

FAULTING_THREAD:  00003a04

BUGCHECK_STR:  APPLICATION_FAULT_NULL_POINTER_WRITE_WRONG_SYMBOLS

PRIMARY_PROBLEM_CLASS:  NULL_POINTER_WRITE

DEFAULT_BUCKET_ID:  NULL_POINTER_WRITE

LAST_CONTROL_TRANSFER:  from 0124105c to 012410f4

STACK_TEXT:  
0113fce8 0124105c 00000000 c6c81e4a 00000054 test!MainWindow::MainWindow+0x54 [d:\study\qt\qt\test\mainwindow.cpp @ 8]
0113fd28 012421b4 00000001 01552198 00000000 test!main+0x4c [d:\study\qt\qt\test\main.cpp @ 8]
0113fd5c 01241519 01240000 00000000 01533426 test!WinMain+0xe4 [c:\users\qt\work\qt\qtbase\src\winmain\qtmain_win.cpp @ 105]
0113fda8 758d8494 00fa4000 758d8470 0b417979 test!__scrt_common_main_seh+0xf8 [d:\agent\_work\3\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 288]
WARNING: Stack unwind information not available. Following frames may be wrong.
0113fdbc 772640e8 00fa4000 a44e8b37 00000000 kernel32!BaseThreadInitThunk+0x24
0113fe04 772640b8 ffffffff 7727f4ad 00000000 ntdll!RtlAreBitsSet+0x88
0113fe14 00000000 0124159d 00fa4000 00000000 ntdll!RtlAreBitsSet+0x58


STACK_COMMAND:  ~0s; .ecxr ; kb

FAULTING_SOURCE_CODE:  
     4:     : QMainWindow(parent)
     5: {
     6:     int *pa = new int[2];
     7:     int *p = nullptr;
>    8:     *p = 1;
     9: 
    10: }
    11: 
    12: MainWindow::~MainWindow()
    13: {


SYMBOL_STACK_INDEX:  0

SYMBOL_NAME:  test!MainWindow::MainWindow+54

FOLLOWUP_NAME:  MachineOwner

IMAGE_NAME:  test.exe

BUCKET_ID:  WRONG_SYMBOLS

FAILURE_BUCKET_ID:  NULL_POINTER_WRITE_c0000005_test.exe!MainWindow::MainWindow

WATSON_STAGEONE_URL:  http://watson.microsoft.com/StageOne/test_exe/0_0_0_0/63ae96ef/test_exe/0_0_0_0/63ae96ef/c0000005/000010f4.htm?Retriage=1

Followup: MachineOwner
---------

Linux系统core文件

QT程序在崩溃时生成内存镜像文件,windows下生成的叫dump文件,linux下生成的叫core文件.

生成core文件

1.在pro 配置添加

QMAKE_CC += -g

QMAKE_CXX += -g

QMAKE_LINK += -g

 其他的步骤和一般的linux程序一样。都是 设置ulimit -c unlimited 、更改core文件、运行可执行程序生成core文件。参考:https://blog.csdn.net/baidu_16370559/article/details/128499174?csdn_share_tail=%7B"type"%3A"blog"%2C"rType"%3A"article"%2C"rId"%3A"128499174"%2C"source"%3A"baidu_16370559"%7D

2.调试core文件

第一种办法:和一般linux程序一样,通过gdb调试。

调用  gdb 程序名  core文件名

参考:https://blog.csdn.net/baidu_16370559/article/details/128499174?csdn_share_tail=%7B"type"%3A"blog"%2C"rType"%3A"article"%2C"rId"%3A"128499174"%2C"source"%3A"baidu_16370559"%7D

第二种办法:使用qt creator

1、Debug->Start Debugging->Load Core File

2、在弹出的窗口选择对应的文件
3、点击OK,开始调试,会看到code里的信息

#-------------------------------------------------
#
# Project created by QtCreator 2022-12-28T12:46:54
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = test
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += \
        main.cpp \
        mainwindow.cpp

HEADERS += \
        mainwindow.h


QMAKE_CC += -g
QMAKE_CXX += -g
QMAKE_LINK += -g





MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    int *px = (int*)malloc(8 * sizeof(int));
    px[9] = 0; //数组下标越界
    int *p1 = NULL;
    *p1 = 1;
    int a = 1;
}

 

gxrong@gxrong-virtual-machine:~/test/build-test-Desktop_Qt_5_9_0_GCC_64bit-Debug$ su root
密码: 
root@gxrong-virtual-machine:/home/gxrong/test/build-test-Desktop_Qt_5_9_0_GCC_64bit-Debug# ulimit -c unlimited
root@gxrong-virtual-machine:/home/gxrong/test/build-test-Desktop_Qt_5_9_0_GCC_64bit-Debug# ./test
Qt: Session management error: None of the authentication protocols specified are supported
段错误 (核心已转储)
root@gxrong-virtual-machine:/home/gxrong/test/build-test-Desktop_Qt_5_9_0_GCC_64bit-Debug# gdb test /data/coredump/core.test.3630
GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from test...done.
[New LWP 3630]
[New LWP 3632]
[New LWP 3631]
[New LWP 3633]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./test'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000055dd922103b1 in MainWindow::MainWindow (this=0x7ffd796bf9e0, 
    parent=0x0) at ../test/mainwindow.cpp:12
12	    *p1 = 1;
[Current thread is 1 (Thread 0x7f5c09949780 (LWP 3630))]
(gdb) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Forrester Wave发布最新报告 腾讯云数据连接器评分卓越

全球权威研究机构 Forrester 在2022年12月8日最新发布的《中国公有云开发和基础设施平台&#xff0c;Q4 2022》报告中&#xff0c;腾讯云获得高分&#xff0c;位列“领导者象限”。Forrester在报告中提出&#xff1a;“企业在进行公有云开发和基设施平台提供商的选项中&#xf…

php宝塔搭建部署实战帮管客CRM客户管理系统源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套php开发的帮管客CRM客户管理系统源码&#xff0c;感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&#xf…

商业智能BI中,业务质量分析和业务成本分析

最初谁也没有想到&#xff0c;信息化 、数字化技术及其应用能够在如此短时间内快速覆盖了社会的方方面面&#xff0c;如今人们的衣食住行和工作生活娱乐都离不开数字化、数据的身影。 数据分析&#xff0c;是离不开业务的&#xff0c;只有把业务研究好了&#xff0c;所做出的报…

Numpy 数组切片

一、列表切片&#xff08;一维数组&#xff09; 1.1、切片原理 列表切片是从原始列表中提取列表的一部分的过程。在列表切片中&#xff0c;我们将根据所需内容&#xff08;如&#xff0c;从何处开始&#xff0c;结束以及增量进行切片&#xff09;剪切列表。Python中符合序列的…

【论文阅读】Online Decision Based Visual Tracking via Reinforcement Learning

Online Decision Based Visual Tracking via Reinforcement Learning 概述 本文2020年发布于NeurIPS(CCF-A)。视觉跟踪通常基于目标检测或者模板区配&#xff0c;但它们都只适用于特定的场景或对象。因为它们遵循不同的跟踪原则&#xff0c;直接将它们融合在一起是不明智的。…

会话技术和JSP技术

会话技术&#xff1a;一次会话中包含多次的请求和响应 一次会话&#xff1a;浏览器第一次给服务器资源发送请求&#xff0c;会话建立&#xff0c;直到有一方断开为止 功能&#xff1a;在一次会话的范围内共享数据 方式&#xff1a; 1、客户端会话技术&#xff1a;Cookie 2、服务…

我司赤城弘一CEO受邀参加东盟与中日韩中小企业人工智能产业论坛并做主旨发言。

我司赤城弘一CEO受邀参加东盟与中日韩中小企业人工智能产业论坛并做主旨发言。 一、活动背景 为推动东盟与中日韩&#xff08;103&#xff09;中小企业服务联盟务实合作&#xff0c;帮助中小企业提高生产力和技术创新能力&#xff0c;进一步提高国际化发展水平&#xff0c;促进…

Web前端期末大作业---新农村建设网页设计

✅ 作者简介&#xff1a;一名普通本科大三的学生&#xff0c;致力于提高前端开发能力 ✨ 个人主页&#xff1a;前端小白在前进的主页 ⭐️ 个人社区 : 个人交流社区 &#x1f340; 学习格言: ☀️ 打不倒你的会使你更强&#xff01;☀️ &#x1f525;前言 期末来咯&#xff0c…

Unity脚本(一)

视频教程&#xff1a;https://www.bilibili.com/video/BV12s411g7gU/?p112 目录 脚本 特性 控制台Console 脚本生命周期 Assembly-CSharp.dll 调试 Component 脚本 脚本是附加在游戏物体上用于定义游戏对象行为指令的代码&#xff0c;需要继承自MonoBehaviour类 编…

使用VTK和Python进行体绘制

使用VTK和Python进行体绘制IntroductionVolume Rendering1. Imports2. Helper-functions3.Options4. Image-Data Input5. Prep-work6. Volume RenderingIntroduction 科学可视化技术是运用计算机图形学、图像处理、计算机视觉等方法&#xff0c;将科学、工程学、医学等计算、测…

亚马逊跨境电商可靠吗?2023年还可以做吗?

新的一年新的打算&#xff0c;不少小伙伴在问&#xff0c;亚马逊跨境电商可靠吗&#xff1f;2023年还可以做亚马逊跨境电商吗&#xff1f;为此我们小编就来简单说说自己的想法吧&#xff01; 亚马逊跨境电商可靠吗&#xff1f; 【回答】&#xff1a;首先我们需要肯定一点的是&…

【Unity3D日常开发】Unity3D中屏蔽不想显示的黄色警告消息

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群&#xff1a;1040082875 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 在开发中&#xff0c;会有一些脚本…

在vue项目中使用rem的完整步骤

首先要知道几个概念&#xff1a; 设计稿是物理像素&#xff0c;在移动端上是css像素&#xff0c;1css像素2物理像素/3物理像素&#xff1b; 要想实现一张设计稿的尺寸能在各个移动端上适配&#xff0c;因为不同的移动端的css像素和物理像素比不一样&#xff0c;所以固定的物理…

【前端】Vue项目:旅游App-(1)搭建项目、重置css、配置router和store(pinia)

文章目录创建项目搭建和配置项目&#xff1a;项目目录结构划分重置CSSnormalize.cssreset.css目录结构配置router对应页面组件index.js配置store创建项目 npm init vuelatest本项目相关选择&#xff1a; 安装相关依赖&#xff1a; npm install试着跑一下&#xff1a; npm ru…

提面录取占比:浙大MBA MPA MEM复试中不可忽视的关键因素之一。

对于复试考生来说&#xff0c;单纯的探讨某个专业有多少人报考没有太大意义&#xff0c;单纯的关注这个专业招多少人也没有太多意义&#xff0c;我们要更加关注在复试阶段还能剩余多少录取指标&#xff0c;因为这个才是复试考生直接相关的数据。不同项目和专业间目前对提前批面…

剖析免密登录,集群之间的免密登录

免密登录1.免密登录的原理2.实现2.1首先配置每个节点的hosts文件2.2 在server1生成秘钥2.3了解文件2.4 实验是否可行3.补充1.免密登录的原理 每台主机authorized_keys文件&#xff0c;该文件就是身份验证的钥匙&#xff0c;该文件里如果有另一台主机的公钥&#xff08;id_rsa.…

Pytest自动化测试框架之Allure报告

目录 简介 部署使用 1、安装&#xff1a; 2、基本使用 测试报告 简介 Allure Framework是一种灵活的、轻量级、多语言测试报告工具。 不仅可以以简洁的网络报告形式非常简洁地显示已测试的内容&#xff0c; 而且还允许参与开发过程的每个人从日常执行中提取最大程度的有…

Android设计模式详解之享元模式

前言 享元模式是对象池的一种实现&#xff0c;用来尽可能减少内存使用量&#xff0c;适合用于可能存在大量重复对象的场景&#xff0c;来缓存可共享的对象&#xff1b; 定义&#xff1a;使用共享对象可有效地支持大量的细粒度的对象&#xff1b; 使用场景&#xff1a; 系统…

STM32/51单片机实训day7——电机驱动|ULN2003A步进电机|Proteus电路设计|旋转角度控制函数|驱动函数|Keil5程序设计

目录 1 ULN2003A步进电机简介 2 步进电机电路设计 3 旋转角度控制函数 4 程序设计 motor.c motor.h 前期LCD参考文章&#xff1a;​​​​​​​ 内 容&#xff1a;编程实现控制步进电机旋转不同角度 学 时&#xff1a;3学时 知识点&#xff1a; GPIO配置、步进电机…

【pygame学习_5】窗口设计

1、引言 窗体是游戏的交互界面&#xff0c;一般我们会遇到窗口大小可调&#xff0c;窗口无边框&#xff0c;全屏显示&#xff0c;最小化设计&#xff0c;改名字&#xff0c;换图标等设计需求。 屏幕绘制有如下重要函数&#xff1a; 2、屏幕模式函数 pygame.display.set.mode …