Dump 文件生成与分析

近期两天因为项目的须要,研究了一下Dump文件相关的知识,今天做一个小节(因为研究不久而且第一次写blog,希望网友们看到不要见笑)。

Dump文件是进程的内存镜像。能够把程序的运行状态通过调试器保存到dump文件里。

   Dump文件是用来给驱动程序编写人员调试驱动程序用的,这样的文件必须用专用工具软件打开,比方使用WinDbg打开。

当我们的程序公布出去之后,在客户机上是无法跟踪自己代码的bug的,所以Dump(扩展名是 .dmp)文件对于我们来说特别实用。我们能够通过.dmp文件把出现bug 的情况再现,然后依据再现的状况(包含堆栈调用等情况),能够找到出现bug的行号,甚至是出现bug的点。

通过研究,我总结了两种方式,例如以下:

(1)安装WinDBG,详细方式能够參照:http://blog.csdn.net/oeichenwei/archive/2009/05/19/4201590.aspx

(2)通过Windows系统方式(我的是WinXP),參照:http://blog.csdn.net/wangyangtao/archive/2010/03/08/5355841.aspx

当然我的方式与以上的两网址里面的不一样(学习以上的基础上做的),我详细做法是:

(1)安装WinDBG

(a)下载安装WinDBG(安装方式不赘述)

(b)打开WinDBG, File/Attach to a process/  然后再列表中显示须要监视的进程(.exe)

(c)当程序崩溃之后运行 DUMP 命令产生 dmp文件,命令有:.dump /m C:/dumps/myapp.dmp  、.dump /ma C:/dumps/myapp.dmp、 .dump /mFhutwd C:/dumps/myapp.dmp

运行以上就产生了dmp文件

(2)通过Windows系统方式

首先用Dr Watson 在执行中输入drwtsn32.exe –i 安装Dr Watson作为默认应用程序调试程序。

再在在执行中输入drwtsn32.exe 设置: 如图:

日志文件路径为 所要放置dump文件的文件夹,故障转储 就是该文件夹下的dmup文件位置

选择指令和错误数量能够写多点

类型选完整选项选1 2 3 6项

当程序崩溃时,Dr Watson会在设定文件夹下生成dump文件

通过以上两种方式就生成了DUMP文件,以下就剩下分析了。我们通过两种方式来进行分析
(1)WinDBG方式分析

(a)打开WinDBG,File/Sybolm File Path/ 指定公布EXE 的时候.PDB生成的路径

(b)file/Open Crash Dump/  打开生成的DMP文件

(c)使用WinDBG的命令来分析Bug, 如命令: !analyze -v

(d)也能够使用快捷栏的功能查看一些变量的基本信息来帮助查看Bug

(2)通过VS2005分析,方法參照网址:http://www.cppblog.com/woaidongmao/archive/2009/10/21/99135.html

以上就是我近期两天研究的一个小节,都是别人的一些成果。 首次写blog,假设有不明确的或者有更高明的方式,希望各位网友赐教!

Dump 文件生成与分析,布布扣,bubuko.com

时间: 2024-10-02 14:31:20

Dump 文件生成与分析的相关文章

Linux core dump文件生成与使用

一.说明 在前一家公司经常测出一些缓冲区溢出导致进程挂掉的问题,开发经常要求在调试模式进行测试,生成core文件给他们定位问题. 当时的调试模式启动只是修改某些配置文件重新启动即可,所以在很长一段时间内并不知道到底要如何生成core文件及core文件如何使用. 二.配置允许生成core文件 临时配置使用ulimit命令进行操作即可: # 查看当前用户core文件配置情况 # 0表示允许core文件大小为0,亦即不允许生成 ulimit -c # 限制core文件大小 # 禁止生成core文件 u

调试SQLSERVER (一)生成dump文件的方法

调试SQLSERVER (一)生成dump文件的方法 调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令 我们知道调试程序主要有两种方法 一种是:live debugging (附加进程 使进程hang住) 生产环境最好不要live debugging 一种是:post-mortem debugging or reading dump files (生成dump文件然后进行分析) 现在介绍一

Dump文件的生成和使用

1 简介 第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个问题整的很惨,在同事的帮助下了解到,对于程序崩溃,最快的解决方式是生成dump文件,通过生成dump文件使用调试工具进行调试,还原程序崩溃时的状态,能够起到快速定位排查问题的作用.Dump文件是进程的内存镜像.可以把程序的执行状态通过调试器保存到dump文件中.Dump文件是用来给驱动程序编写人员调试驱动程序用的,这种

dotnet core调试docker下生成的dump文件

最近公司预生产环境的docker容器经常出现内存暴涨现象,有时会突然吃掉几个G,触发监控预警,造成容器重启. 分析了各种可能原因,修复了可能发生的内存泄露,经测试本地正常,但是发到预生产还是会有内存暴涨现象,反而更改GC模式后内存使用保持较低水平,百思不得其解,所以想到使用调试dump文件方式来分析应用内存状况. 环境: lldb:3.9 dotnetcore:2.1.6 docker image:microsoft/dotnet:2.1.6-aspnetcore-runtime (根据文档,d

sublime打开文件时自动生成并打开.dump文件

GBK Encoding Support 没有安装前打开ASNI格式编码文件会乱码,安装成功重启则可以打开正常 关于.dump文件生成的解释: 当打开一个非utf-8格式且包含汉字的文件时,sublime text 2会自动生成一个dump文件,文件修改过程中,不会修改原文件,只有按"保存"了才会将dump的数据更新到原文件里,关闭当前编辑的dump文件则会自动删除dump文件. 但是有时候 GBK Encoding Support 插件也会出些bug,就想这样,生成.dump文件后自

linux下生成core dump文件方法及设置

core dump的概念: A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally (crashed). In practice, other key pieces of program state are usually dumped at the s

linux下生成core dump文件方法及设置【转】

转自:http://blog.csdn.net/mrjy1475726263/article/details/44116289 源自:http://andyniu.iteye.com/blog/1965571 core dump的概念: A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has te

gdb调试常用实用命令和core dump文件的生成(转)

1.生成core dump文件的方法: $  ulimit -c //查看是否为0 如果为0 $   ulimit -c unlimited 这样在程序崩溃以后会在当前目录生成一个core.xxxx的文件 2.调试core dump文件 生成了core.xxx文件以后 $  gdb ./应用程序  core.xxxx 就会恢复现场到你的程序崩溃的那一刻 (gdb)bt          //这个命令会列出程序崩溃时的堆栈信息,一层一层会有标号  #0  #1  #2 ....... 如果你要查看

Java千百问_07JVM架构(014)_什么是Dump文件

点击进入_更多_Java千百问 1.什么是Dump文件 Dump文件是进程的内存镜像.可以把程序的执行状态通过调试器保存到dump文件中. Dump文件是用来给驱动程序编写人员调试驱动程序用的,这种文件必须用专用工具软件打开. 当我们的程序发布出去之后,在客户机上是无法跟踪代码的,所以Dump(扩展名是 .dmp)文件对于我们来说特别重要.我们可以通过.dmp文件把出现问题的情况再现,然后根据再现的状况(包括堆栈调用等情况),可以找到出现问题对应的行号. 2.如何生成Dump文件 生成Dump文