使用windbg分析dump文件
使用windbg分析dump文件的步骤。
- 准备工作。
- 打开dump文件。
- 指定符号表文件的路径。
- 指定可执行文件的路径。
- 指定源码文件的路径。
- 在windbg的命令行,输入并执行如下命令
.reload,重新加载前述数据文件。!analyze -v,分析dump文件。kbn,得到崩溃时的调用栈信息。.ecxr,打开栈顶关联的源码。
其它
如何安装windbg?
当前windbg整合在了Windows SDK里,所以可以通过访问windows-sdk,通过下载、安装Windows SDK来安装windbg。如何生成dump文件?
目前已知的方法,有如下几种:- 通过任务管理器,右键选中进程之后,选择创建转储文件。参考Windows下dump文件生成与分析。
- 配置注册表,参考Windows下dump文件生成与分析。
- 使用windbg等调试器,挂载到目标进程,然后使用
.dump命令生成dump文件。 - 使用管理员权限打开cmd.exe,执行
windbg -I,可以将windbg注册为系统默认调试器,当系统中的进程出现崩溃现象时,将自动启动windbg并挂载至相应的进程中,此时可以执行.dump命令来生成dump文件。
符号表文件非常关键,在构建软件时,无论debug/release,均指定编译器输出pdb文件。
- 对于稳定复现的问题,这时使用Visual Studio IDE来调试,非常方便、高效。
- 对于很难复现、或者没有找到复现条件的问题,事后分析dump文件,搭配pdb文件,同样有助于分析问题。
debug/release构建模式对分析dump文件的影响。
- debug方式构建的程序,编译器做的优化相对较少,分析dump文件时可以方便的查看各个变量的取值。
- release方式构建的程序,编译器做了大量的优化,分析dump文件时,可能无法看到具体变量的值,分析难度可能比较大。
参考资料
使用windbg分析dump文件的更多相关文章
- WinDbg分析DUMP文件
1. 如何生成dump文件? 原理:通过SetUnhandledExceptionFilter设置捕获dump的入口,然后通过MiniDumpWriteDump生成dump文件: ...
- 使用 WinDbg 分析dump文件
步骤一: 生成dump文件. #include <Windows.h> #include <iostream> #include <DbgHelp.h> #incl ...
- WinDbg分析dump文件排查bug
文章:WinDbg-如何抓取dump文件 命令: cd C:\Windows\System32\inetsrv appcmd list wp 可以查看各个站点的pid
- Windows下利用Windbg 分析dump
概述: 注册生成dump文件的函数. 当程序收到没有捕获的异常时,调用上述函数,生成dump文件. 利用Windbg结合编译程序时生成的pdb和代码来分析dump文件,定位问题. 如下代码生成dump ...
- Windbg分析DMP文件
1.提取Dump格式文件 有两种方式: 第一种,程序崩溃时,启动任务管理器,选择崩溃的*.exe进程,右键选择创建转储文件,通过 开始—运行—输入 %temp% --确定--在打开Temp窗口中即可找 ...
- WinDbg分析Dump常用方法和命令
记录下自己使用WinDbg分析Dump时常用的一些方法和命令 !analyze -v //找出出错的堆 .exrc //找到程序崩溃的位置 !heap //打印出错函数的局部位置 !for_each_ ...
- 使用Windbg解析dump文件
WinDbg OllyDbg SoftICE (已经停止更新) 虽说WinDbg在无源码调试方面确实比较困难,但在调试内核方面却真的有独到之处. https://www.pediy.com/kssd/ ...
- WinDbg 分析dump
1.生成dump文件. 在代码捕获异常,并将异常写入dump文件. #include "stdafx.h" #include <Windows.h> #include ...
- 使用MAT(Memory Analyzer Tool)工具分析dump文件--转
原文地址:http://gao-xianglong.iteye.com/blog/2173140?utm_source=tuicool&utm_medium=referral 前言 生产环境中 ...
- (转)解决WinDbg调试Dump文件不同环境mscordacwks.dll版本问题
解决WinDbg调试Dump文件不同环境mscordacwks.dll版本问题 开发人员提交一个dump文件(Windows Server 2008 R2),当前调试环境Windows Serve ...
随机推荐
- 【LeetCode哈希表#4】梦开始的地方:两数之和(map),以及关于容器map的一些代码技巧
两数之和 力扣题目链接(opens new window) 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种 ...
- 用Docker搭建DNS服务器
0.准备工作 如果是全新安装的服务器,先要给root账户设置密码,命令是 sudo passwd root 然后切换到root账户 su root 上述过程屏幕输出如下 1.Docker-Compos ...
- STM32标准库内部Flash读写
STM32标准库FLASH读写 1. STM32内部FLASH介绍 STM32系列一般集成有内部flash,这部分内存可以直接通过指针的形式进行读取.但是由于内部flash一般存储为重要数据或程序运行 ...
- 2023 年值得一读的技术文章 | NebulaGraph 技术社区
在之前的产品篇,我们了解到了 NebulaGraph 内核及周边工具在 2023 年经历了什么样的变化.伴随着这些特性的变更和上线,在[文章]博客分类中,一篇篇的博文记录下了这些功能背后的设计思考和研 ...
- 理解LLMOps: Large Language Model Operations
理解LLMOps: Large Language Model Operations 对于像我一样的小白来说,本文是一篇非常不错的LLMs入门介绍文档.来自:Understanding LLMOps: ...
- Java 多线程------多线程的创建,方式一:继承于Thread类
1 package com.bytezero.thread; 2 3 /** 4 * 多线程的创建,方式一:继承于Thread类 5 * 1.创建一个继承于Thread类的子类 6 * 2.重写Thr ...
- Java 小练习 创建类 + 调用(1)
1 package com.bytezero.exer; 2 3 /** 4 * 5 * @Description 6 * @author Bytezero·zhenglei! Email:42049 ...
- mybaits 笔记2022年8月学习笔记
mybatis整理 前期准备 安装必要依赖: idea开发mybatis,如果学习测试,可以在一个直接建一个空白项目,如果是用spring boot,则建议用用boot的安装捆绑方式 核 心依赖 or ...
- 图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制
LDBC(Linked Data Benchmark Council)Social Network Benchmark,简称 LDBC SNB,是一种针对社交网络场景的评估图数据库性能的基准测试. L ...
- gdb调试入门指北
GDB安装及其插件控制 下载 GDB ,这个项目将 GDB 的插件放到了一个文件夹下,方便读取文件路径 $ git clone https://gitee.com/hongsofwing/GDB-Pl ...