Qt Creator + MSVC 2022 64bit 配置 Dump 文件生成与分析流程

Visual Studio + QT 配置 Dump 文件生成与分析流程

1、Visual Studio详细配置步骤

该步骤能保证程序生成带符号表的pdb文件

步骤0:配置生成pdb文件

Debug版本

右键点击项目 → "属性"

选择 "配置" → "Debug"

选择 "链接器" → "调试"

确保 "生成调试信息" 为 "生成调试信息 (/DEBUG)"

确保 "生成程序数据库文件" 为 "$(TargetName).pdb"

选择 "C/C++" → "常规"

确保 "调试信息格式" 为 "程序数据库 (/Zi)"

Release版本

  1. 右键点击项目 → "属性"

  2. 选择 "配置" → "Release"

  3. 选择 "链接器" → "优化"

  4. 将 "链接时间代码生成" 从 "使用增量链接时间代码生成 (/LTCG:incremental)" 改为 "使用链接时间代码生成 (/LTCG)"

  5. 确保 "引用链接器选项" 中包含 "/OPT:NOREF"

  6. 选择 "链接器" → "调试"

  • 确保 "生成调试信息" 为 "生成调试信息 (/DEBUG)"

  • 确保 "生成程序数据库文件" 为 "$(TargetName).pdb"

  1. 选择 "C/C++" → "常规"
  • 确保 "调试信息格式" 为 "程序数据库 (/Zi)"

8.选择 "C/C++" → "优化"

设置 "优化" 为 "已禁用 (/Od)" 或 "最小大小 (/O1)"

确保 "内联函数展开" 为 "默认" 或 "仅 __inline (/Ob1)"

procdump 工具,使得当程序崩溃时能够自动生成 dump 文件,以便进行后续的故障分析和调试。

步骤 1: 确认 Procdump 安装

  1. 下载 Procdump 工具(如果尚未安装)
  1. 验证 Procdump 安装
  • 打开命令提示符

  • 运行 procdump -v

  • 确认显示版本信息

1.2 配置系统环境变量(可选)

  • 将 Procdump 所在目录添加到系统 PATH 环境变量中,方便在命令行中直接调用

步骤 2: 配置 Visual Studio 外部工具

将procdump工具配置为外部工具

步骤 3: 配置 Visual Studio 调试器

此步骤作用是拉起procdump进程去监控应用程序,当应用程序崩溃时会自动dump文件

  1. 右键点击项目 -> "属性"

  2. 选择 "调试"

  3. 选择 "命令" 下拉菜单 -> "浏览..."

  4. 选择 procdump.exe 的路径

  5. 在 "命令参数" 中输入:

    复制代码
    -ma -e 1 -x $(TargetDir) $(TargetPath)
  6. 在 "工作目录" 中输入: $(TargetDir)

  7. 点击 "确定"

步骤 4: 分析 Dump 文件

  1. 在 Visual Studio 中,点击 "文件" -> "打开" -> "文件..."

  2. 选择生成的 dump 文件

  3. 在 "转储摘要" 窗口中,点击 "使用 仅限本机 调试"

  4. 分析调用栈和变量值,确定崩溃原因

Qt Creator + MSVC 2022 64bit 环境下

配置生成dump文件

可以通过修改注册表,当应用程序崩溃时自动生成dump文件

特定应用程序设置生成dump

假如应用程序为Vtk_Helloworld.exe,生成dump文件目录设置为F:/Dumps,

方法一:通过命令行修改注册表

复制代码
# 创建应用程序专用配置键
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\Vtk_Helloworld.exe" /f

# 设置dump文件保存路径为F:\Dumps
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\Vtk_Helloworld.exe" /v DumpFolder /t REG_EXPAND_SZ /d "F:\Dumps" /f

# 设置最多保留5个dump文件
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\Vtk_Helloworld.exe" /v DumpCount /t REG_DWORD /d "5" /f

# 设置生成小型转储(1=小型,2=完整)
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\Vtk_Helloworld.exe" /v DumpType /t REG_DWORD /d "1" /f

所有应用程序生成dump

复制代码
# 创建LocalDumps键
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /f

# 设置全局dump保存路径(默认位置)
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpFolder /t REG_EXPAND_SZ /d "%LOCALAPPDATA%\CrashDumps" /f

# 设置最多保留10个dump文件
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpCount /t REG_DWORD /d "10" /f

# 设置生成完整dump(2=完整,1=小型)
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpType /t REG_DWORD /d "2" /f

默认保存位置

  • 如果使用%LOCALAPPDATA%\CrashDumps,实际路径为:

    • 当前用户:C:\Users\<用户名>\AppData\Local\CrashDumps

    • 系统服务:C:\Windows\System32\Config\SystemProfile\AppData\Local\CrashDumps

配置项目构建

相关推荐
XLYcmy7 分钟前
AI 赋能后中文与英文数据库对比分析报告 上
数据库·ai·llm·prompt·检索·wos·cnki
这个DBA有点耶43 分钟前
ELT 工具选型完整指南:从 ETL 差异分析到工程落地
数据库·架构·代码规范
IvorySQL1 小时前
PostgreSQL 日报|堆表选择性索引更新(10 月 13 日)
数据库·人工智能·postgresql·开源·区块链
张洛闻Eren1 小时前
Ansible【第一课】:Ansible介绍
运维·数据库·云原生·kubernetes·github·ansible
扶尔魔ocy1 小时前
【qt openGL入门笔记】OSG实现飞机模型在网格图上飞行并进行态势标绘(四)
qt·opengl·osg
深圳市益普科技有限公司2 小时前
中小封装厂上 MES,为什么十个项目九个坑?
大数据·数据库·人工智能
云边云科技_云网融合2 小时前
从 POS 机到访客 Wi-Fi:零售门店安全建设的完整解法
服务器·网络·数据库
天行健,君子而铎2 小时前
知形-数据库风险监测系统:非侵入式、可溯源、差异化的数据库安全方案
网络·数据库·安全
这个DBA有点耶2 小时前
分布式事务深度:TCC空回滚、悬挂与Saga补偿风暴的根因与解法
数据库·mysql·代码规范
执笔为剑2 小时前
2.1.2-2、V8R3迁移到V8R6-迁移介绍
数据库