忽然有一天部署在服务器的一个应用挂掉了,没办法只能进入服务器打开html

【事件查看器】查看下,好不容易找到了打开后一脸懵逼程序员

事件查看器查到的内容根本对咱们排障没有任何做用。web

在这个时候若是有对应的dump文件就能派上用场了,c#

只要有dump文件就能查到应用挂掉那刻的一手情报,可能有人认为分析dump文件是很是难的事情,服务器

可是最近不断有新的dump分析工具出来,例如用vs2017就可以很简单的分析dump文件。多线程

接下来咱们用几个实际的例子来看看如何用vs2017来分析dump文件吧mvc

dump文件的收集asp.net

应用挂是一瞬间的事情,挂了以后就没办法生成dump文件了。因此首先要设置一下自动生成dump文件。async

打开注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting工具

在Windows Error Reporting下新建一个 LocalDumps文件夹

而后在这项里面新增 DumpCount DumpFolder DumpType 这三项

演示stackoverflow错误致使的crash

咱们有建立一个简单的console程序

class Program

{

static void HogeHoge(string s)

{

HogeHoge(s);

}

static void Main(string[] args)

{

HogeHoge("hoge-");

}

}

编译成exe 后运行 毫无疑问会出现以下错误

查看下dump文件果真生成了

那咱们分析下这个dump文件,用VS2017打开它,会出现它的概要信息

你会发现异常信息处写了 【该线程已用完其堆栈】就能够很明显看出来是stackoverflow。

并且看右侧【操做】处 有[使用 仅限托管 进行调试] 和 [使用 混合 进行调试] 和 [使用 仅限本机 进行调试]

这里牵扯出3个名词

托管  ======> 适用于在公共语言运行时下运行的代码 所谓托管是指内存管理由系统而不是由程序员管理  你们都知道c#有关内存都是CLR来管理的

混合  ======>对托管代码和非托管代码都调用调试器

本机  ======>适用于非托管代码

若是你的代码里面没有调用非托管代码的话 点击 前面2个按钮均可以的

点击后会直接进入

这样错误源码级别看的很是清楚了。由于是咱们本机建立的工程 pdb 和 源码都有。因此才能直接定位到。可是实际上crash都是发生在服务器上,把服务器上的dump文件打开的话还会是这样吗

下面咱们来作一个模拟

用Relase编译 而后把 Program.cs文件也给删除掉。而后从新执行crash生成dump文件

而后用一样的步骤vs打开点击调试就会提示找不到 Program.cs

这样一来可供咱们排障的情报就少了不少。在这种状况下 咱们能够利用vs 提供的几个窗口来观察

分别是如下三个

第一个窗口:线程窗口

实际的程序每每有不少线程在运行,每一个线程的切换等重要信息能够在这个窗口进行观察。

第二个窗口:调用堆栈窗口

调用堆栈窗口是和线程窗口联动的。

第三个窗口也是最重要的窗口:并行堆栈

如图所示,每一个线程和它的堆栈内容展现的很清楚。只不过本例子是比较简单的,即便不看这个看前2个窗口就能知道缘由了。

可是实际的应用若超过运行上百个线程的话,将这些线程用图形可视化出来对于咱们排查复杂问题是很是有用的!

CPU100和死锁致使的crash解析

因为系统能够配置crash自动生成dump文件。可是有些状况好比部署在iis上web服务cpu飙到100%下不来致使为web中止服务。这个时候就须要咱们手动提取dump文件了。

下面咱们来模拟一下这种场景:

新建一个asp.net mvc程序

public classHomeController : Controller

{async TaskGetAsync()

{var str = await new HttpClient().GetStringAsync("http://www.baidu.com/");returnstr;

}publicActionResult Index()

{var s =GetAsync().Result;returnView();

}

}

以上代码 async/await会形成死锁

咱们用iis来启动这个web应用后页面圈圈一直在转网页空白一片

打开Windows任务管理器找到w3wp

用vs打开这个dump文件 点击调试后后

打开并行堆栈这个窗口

你们看会有不少分支,该从哪一个开始分析呢,教你们一个小技巧,不知道如何下手的时候就选分支越长的!

从HomeController.Index进来,中止在ManualResetEventSlim.Wait

死锁缘由:

总结:

说到dump你们立马可能想到的是windbg

可是windbg的各类命令对于新手们仍是比较困难的,Vs工具也能帮助咱们分析dump,可以解决的问题也有不少

下一篇文章我将介绍内存泄露dump分析的例子

服务器dump文件位置,dump解析入门-用VS解析dump文件进行排障相关推荐

  1. dump解析入门-用VS解析dump文件进行排障

    突然有一天部署在服务器的一个应用挂掉了,没办法只能进入服务器打开 [事件查看器]查看下,好不容易找到了打开后一脸懵逼 事件查看器查到的内容根本对我们排障没有任何作用. 在这个时候如果有对应的dump文 ...

  2. 对计算机文件概念的理解,入门概念之三: 什么是文件 - 电脑知识学习网

    入门概念之三: 什么是文件 12-05  电脑知识学习网   来源: 网络 文件在我们在电脑学习中用得最多的一个词.  那什么是文件呢? 文件是如何保存在电脑中的? 文件有那些类型? 文件有那些属性? ...

  3. mysql linux 数据库文件位置_mysql在linux下修改mysql数据库文件位置

    linux下(这里是centos),mysql安装后,数据库的数据默认存放在/var/lib/mysql目录下,如果该目录下挂载的磁盘空间很少,不够用,需要迁移到其他的目录位置. 方法一: 参照win ...

  4. 火狐 脱机文件位置不能更改_如何更改Firefox下载文件夹的位置

    火狐 脱机文件位置不能更改 By default, when you download something using Firefox, that download gets saved to the ...

  5. touch服务器端文件,Sencha touch 2 入门 -------- DataView 显示服务器端JSON文件数据...

    今天学习了下DataView如何显示JSON文件数据,废话不多说,直接贴代码: 首先看下文件目录: 然后看下我们要处理的JSON文件,bookInfo.json. { "success&qu ...

  6. ‍swf文件格式解析入门(tag解析)

    上文把文件头解析完成了,接下来就是解析标签 swf文件把所有的资源都打包在标签内部 如字体,位图,嵌入的2进制,代码等等 tag有两种类型,1种为短tag,1种为长tag 短tag的长度是小于63个字 ...

  7. Office 文件解析入门

    Office 文件解析入门 概述 - Office 解析相关协议 这里所讲的 Office 文件指的是微软 Office2007 及以后的 PPT/EXCEL/WORD 等文件格式,因为 Office ...

  8. oracle修改数据文件存储位置,oracle 修改数据库文件位置

    Oracle 体系结构 Oracle 服务器 如图所示:由oracle实例(INSTANCE)和数据库(database)组成. 1) Instance 实例用于管理和调用数据库,是由oracle系统 ...

  9. Win7旗舰版系统hosts文件位置在哪里

    hosts文件可以屏蔽网页广告,打开一些普通方式无法访问的国外网页等,是系统必备的重要文件,对于一些用户来说会经常用到它,那么Win7旗舰版系统hosts文件位置在哪里呢?小编介绍Win7旗舰版系统h ...

  10. host文件位置以及如何修改hosts文件

    hosts文件位置 C:\Windows\System32\drivers\etc\hosts hosts文件修改方法 1.找到hosts文件: 2.更改hosts为允许安全控制状态: 3.将host ...

最新文章

  1. 物体的三维识别与6D位姿估计:PPF系列论文介绍(一)
  2. 使用 Code Snippet 简化 Coding
  3. [动漫日语每天一句]01 没什么大不了的。
  4. centos7进入用户模式修改root用户名
  5. vue双向数据绑定v-model绑定单选框,复选框,下拉框
  6. 实现 消息提醒图标_Mac 上自带的「提醒事项」千万别错过
  7. 官方文档---ubuntu 安装OpenStack
  8. UnimplementedError: Fused conv implementation does not support grouped convolutions for now
  9. adams 2015破解安装汉化教程
  10. 站群软件-免费站群软件
  11. 青果教务系统适配小爱课程表
  12. 风变编程python基础语法-第0关-千寻的名字
  13. 百度地图api-基本用法总结
  14. 桌面cpu与服务器cpu天梯,桌面CPU性能排行 CPU天梯图2017年6月最新版
  15. 用户画像业务数据调研及ETL(二)持续更新中...
  16. 工业以太网串口网关ENB-301MT
  17. gitbook:gitbook-cli\node_modules\npm\node_modules\graceful-fs\polyfills.js
  18. su组件在什么窗口,【答疑】草图大师Sketchup组件窗口快捷键是什么呢? - 羽兔网问答...
  19. 【单片机仿真】(七)寻址方式 — 位寻址
  20. matlab 扫雷,matlab 扫雷

热门文章

  1. 基于RV1126平台imx291分析 --- media部件注册 mipi csi phy
  2. 运维系统 联想服务器,联想运维方案.pdf
  3. 教育平台在线,教育平台源码 类似eduline教育平台系统源码下载
  4. Win装linux双系统教程
  5. JDK API 下载
  6. 《算法》第四版中文——学习资料
  7. 实现类似黑客帝国的字符流特效屏保
  8. FreeTextBox使用详解(FTBv3-1-6)
  9. vc linux 中文版下载64位,vc2015运行库64位-vc++ 2015运行库64位下载 v14.0.23026官方版--pc6下载站...
  10. python写字_用Python写书法作品,WOW!