新乡市网站建设_网站建设公司_虚拟主机_seo优化
2025/12/30 11:58:32 网站建设 项目流程

目录
  • 一、 符号文件路径设置
  • 二、 打开并分析 dump 文件
    • 1. 指令分析:
    • 2. 检查模块是否匹配


一、 符号文件路径设置

Windbg分析dump文件需要有与当前程序匹配的符号文件 pdb ,否则无法有效的进行分析。首先设置符号文件pdb的路径,在调试自己的程序崩溃问题时,可以移除默认符号路径中包含的微软服务器路径,以避免大量时间在下载系统对应的符号文件,常用的设置符号路径可以在界面设置或者用命令行进行设置:

  • 在Settings页面进行设置:
  • 在命令行进行设置,打开dmp文件之后无法正确加载对应的pdb文件,需要重新设置路径并加载:
    • .sympath D:\WorkSpace\Test_Cpp\x64\Debug;D:\tmp:使用 .sympath 设置路径,多个路径时用分号隔开。
    • .reload:设置完成之后重新加载
    • .reload /f 模块名称:强制加载某个模块

二、 打开并分析 dump 文件

通过 Open dump file来打开文件相关的dmp文件,WinDbg界面会显示相关的信息。

1. 指令分析:

  • !analyze -v :自动分析加载的dmp文件,显示崩溃类型概要,如*** Unhandled exception: C0000005.ACCESS_VIOLATION,主要关注:

    • \(ExceptionAddress\): 异常发送的大概位置
    • \(ExceptionCode\): 异常的原因
  • kpn:显示带参数和符号的堆栈信息,如果符号文件完全匹配,怎会显示出崩溃代码所在的文件和具体的行数,如图显示崩溃在 main.cpp的第154行,结合对应的代码可以查看到是空指针的调用导致的:

  • kb:显示简要调用栈信息,作用与 kpn类似

  • dv /t /v:查看当前函数的所有局部变量

  • dt this:查看当前对象成员是否有效,如果未初始化可能显示为 (null)

  • ~* k:查看当前进程中所有线程的堆栈信息

2. 检查模块是否匹配

如果执行以上的分析之后,无有效的信息输出,那可能是pdb与崩溃的程序版本不匹配,可以使用如下指令进行分析:
lm vm A00_GeneralTest :其中A00_GeneralTest为当前模块的名称,输出包含:

  • C (export symbols) : 表示未能成功加载pdb文件
  • C (private pdb symbols):表示已经成功加载对应的pdb文件,显示如下

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询