• VC++程序崩溃时,使用Visual Studio静态分析dump文件


    Window环境下的C++程序如果发生异常崩溃,首先会和客户联系,让帮忙取特定目录下的dump文件和log文件来分析崩溃的原因。不过发生崩溃的话,从log一般分析不出特定原因,这时候dump文件就起作用了。可以通过Visual Studio和Windbg来静态分析dump文件,定位发生异常的位置和调查可能的原因。

    文章将介绍如何使用Visual Studio工具进行C++ 静态dump文件的分析。

    1.打开dump文件

    把dump文件拖进Visual Studio即可

    2.启动dump文件,进行调试

    点击【仅限本机进行调试】,启动dump(托管工程可以选择【仅限托管】或者【混合】)
    在这里插入图片描述

    3.定位异常位置
    3.1dump文件pdb文件在同一目录

    调试启动后,如果dump文件和pdb文件在同一个目录的,可以直接定位到异常代码行。
    在这里插入图片描述

    3.2dump文件pdb文件不在同一目录

    调试启动后,如果dump文件和pdb文件不在同一个目录,会显示找不到pdb文件,则需要通过【新建路径】设置pdb文件的路径,然后点击【加载】,就可以定位到异常代码行了。或者把pdb重新放到和程序模块一个目录下,再从第一步开始。
    在这里插入图片描述

    3.3.查看调用堆栈

    实际调试中,最终崩溃的地方往往发生在系统dll中。因为对于系统dll,我们没有对应的pdb,并且也不大可能是系统dll造成的异常,所以需要根据调用堆栈去查看是我们自己的哪个模块调用了系统函数。在没有设置自己程序的pdb时,如图是看不到详细调用堆栈的。
    在这里插入图片描述
    根据实际情况,把有可能发生问题的模块的pdb文件放入和dump同一目录,重新进行调试。
    如图,pdb文件加载后,就可以看到发生崩溃时自己程序的调用堆栈了,并且具体到了函数和行数。双击调用堆栈那里的函数(蓝色遮盖区域),可以打开cpp并查看发生问题地方的上下文,并检查内存的变量值。(如果没有自动打开代码,只需按照提示设置正确的代码路径即可)
    在这里插入图片描述


    C++程序崩溃时,使用Windbg静态分析dump文件

  • 相关阅读:
    Mysql——》Innodb存储引擎的索引
    java基础的复习
    uview的input框,clear没反应的问题
    Redis缓存的连环炮面试题
    应用层使用select进行检测连接状态
    如何做自媒体在一个月内赚到2万?
    AIGC(生成式AI)试用 8 -- 曾经的难题
    Python的内置函数(十七)、replace()
    Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础
    008.分隔符、循环、比较
  • 原文地址:https://blog.csdn.net/xiaofeizai1116/article/details/134032491