转储文件是什么?愣着干嘛!不懂当然得学了

之前做数据库相关题目的时候,被一道有关转储文件的题给难住了,这转储文件到底是什么啊!不行,我得把它弄懂!愣着干嘛!这种求知若渴的精神不值得点赞吗?

文章目录

  • 一、概念
  • 二、转储文件的作用
  • 三、抓取转储文件

一、概念

转储文件,又叫dump文件。简单来说,转储文件是进程某一时刻的快照
微软官方对转储文件的定义是这样的:转储文件是应用程序在进行转储那一时刻的快照。它显示了正在执行的进程以及已加载的模块。如果转储时保存了堆信息,则转储文件将包含该时间点应用程序的内存快照。在Visual Studio中打开包含堆信息的转储文件就像调试会话中的在断点处停止一样。尽管无法继续执行,但是可以查看应用程序在发生转储时的堆栈,线程和变量值。
转储文件一般都是在软件出现问题时手动生成或者程序自动生成。

二、转储文件的作用

可能相对于那一长串的概念,你更关心这个转储文件是做什么的,发挥着什么样的作用。
当程序发布后,总是会出现一些问题的,比如出现崩溃、死锁、功能异常等情况的时候,我们需要调试分析,但有时候并不适合实时调试,最好可以在出现问题的时候抓取转储文件,供我们事后分析。
以下三种情况不适合做实时调试:

  1. 程序在客户机器上出问题了,但是限于条件,我们不能在客户机器上调试。
  2. 某个bug很难重现,有时候运行几天后才会出现,我们需要在问题出现的时候保存相关信息。
  3. 我们发布的是服务器端的程序。程序故障后,我们需要尽快恢复服务,不能长时间让服务进程处于 “宕机” 状态。

关于转储文件的作用,微软官方的介绍是这样的:转储主要用于调试开发人员无法访问的计算机上发生的问题。例如,当您无法在自己机器上重现客户遇到的崩溃或挂起时,可以使用客户计算机上保存的转储文件。测试人员也可以创建转储文件以保存崩溃或挂起数据,以便继续做更多的测试。Visual Studio可以为托管代码或本机代码保存转储文件。调试器可以加载由Visual Studio或其他程序以minidump格式保存的转储文件。

三、抓取转储文件

我们把需要抓取转储文件的情形分为四大类,每种情形有相应的抓取方法,这四类分别为:

  1. 在任意时刻抓取 dump,不必等待进程出现异常后再抓取。
    有时候程序不响应了,你可以在他发生这个问题之后抓取转储文件,但也可以在进程处于正常运行的状态下抓取转储文件。即当你想了解程序当前的状态时,可以抓取其转储文件进行分析。
  2. 系统中的进程异常退出时,自动生成转储文件。
    有时候,进程莫名其妙退出了,我们想分析下原因。这时候可以做些设置,让进程异常退出的时候能留下一份转储文件(或者中断到调试器),这样就可以进一步分析原因了。
  3. 进程异常后,自动保存转储文件供我们事后分析。
    我们的进程出现异常的时候,自动保存一份转储文件,并保存一些关键信息(例如日志、异常退出时的截屏等)供我们事后分析。我们常用的QQ及微信都有有类似的机制。
  4. 抓取系统级别的转储文件。

下面介绍几种常用的抓取转储文件的工具。

  1. 任务管理器
    任务管理器可以说是最易获取的系统工具,同时它具有生成转储文件的功能。如何打开任务管理器想必不用我说了吧~
    抓取方法:打开任务管理器- >右键单击想要抓取转储文件的进程- >点击“创建转储文件”。这下就可以看见对话框显示创建成功和创建的转储文件的位置。
    转储文件是什么?愣着干嘛!不懂当然得学了_第1张图片
  2. 注册表
    可以通过在注册表中进行配置,让操作系统在程序崩溃时自动生成dump文件,并放到指定位置。
    打开注册表的方法为:win+R,在运行中输入regedit,回车即可打开注册表。
    在注册表项计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps下根据进程名新建子项并配置如下:
    名称:DumpCount,类型:REG_DWORD,最大保留Dump个数,默认为10。
    名称:DumpType,类型:REG_DWORD,Dump类型(1-Mini dump, 2-Full dump),默认为1。
    名称:DumpFolder,类型:REG_EXPAND_SZ,Dump文件保存的位置。
    转储文件是什么?愣着干嘛!不懂当然得学了_第2张图片
  3. Adplus
    Adplus工具位于windbg安装目录,最早叫adplus.vbs,以VBScript脚本提供,最新版改成了adplus.exe。adplus.exe不仅可以在程序崩溃时手动运行来生成dmp文件,也可以在崩溃之前就运行它,当程序崩溃时它会自动生成dmp文件;甚至可以在程序没有运行之前就先运行adplus,当程序崩溃时它会自动生成dmp文件。
  4. Windbg
    Windbg是Windows上非常强大的调试器。(不过作者并没有用过,也不会用,有待学习,这就不介绍了,想了解其使用方法以及更多的抓取转储文件的可以看看这两篇文章- >1.你需要知道的 N 种抓取 dump 的工具、2.如何生成转储文件)

(PS:今天清明祭,也不知道说什么来描述我此时的心情。愿为此次疫情而牺牲的烈士们一路走好!你们永远是我们的英雄!)

你可能感兴趣的:(三级数据库知识点学习,数据库)