Debug Diagnostics Tool创建.Net异常转储并用Windbg分析异常
当我们要在IIS PRD环境下分析异常,并且对问题毫无头绪,又没有权限直接上打Log的代码。这个时候就是Debug Diagnostics Tool & Windbg大显神威的时候了。
Debug Diagnostics Tool

安装方法各位大侠请自行百度,重点说一下抓转储文件。

一开始是选择抓取的程序,我当然要抓IIS的应用程序池喽。。。

设定要抓取的文件个数,点击Exceptions可以设定在发生什么异常时候抓取。

我当然是要抓高大上的.Net异常喽。。。
接下来是设置保存的位置。
为了演示随便搞了一个会抛出异常的页面:

看一下生成的转储文件长个毛样子哇:

Windbg
下面该windbg出手了,这个网上教程比较多,直接说重点了:
~#:查看问题线程,~线程id s:切换线程,!clrstack -l:查看当前堆栈并打印局部变量。
0:023> ~#
. 23 Id: 790.1280 Suspend: 1 Teb: 000007ff`ffec6000 Unfrozen
Start: clr!Thread::intermediateThreadProc (000007fe`ef57dafc)
Priority: 0 Priority class: 32 Affinity: f
0:023> ~23 s
KERNELBASE!RaiseException+0x39:
000007fe`fdfaaaad 4881c4c8000000 add rsp,0C8h
0:023> !clrstack -l
OS Thread Id: 0x1280 (23)
Child SP IP Call Site
000000000d3ad610 000007fefdfaaaad [FaultingExceptionFrame: 000000000d3ad610]
000000000d3adb60 000007fe8fe415cc *** WARNING: Unable to verify checksum for App_Web_ix1d1jtk.dll
_Default.Page_Load(System.Object, System.EventArgs) [c:\inetpub\wwwroot\Default.aspx.cs @ 17]
LOCALS:
0x000000000d3adb80 = 0x00000000fff4d4e8
0x000000000d3adb88 = 0x0000000000000000
0x000000000d3adb8c = 0x0000000000000001
呵呵,0x00000000fff4d4e8这个地址就是我们代码里面随便new的对象:sssssss奥,来DO一下看看这个对象吧:
0:023> !do 0x00000000fff4d4e8
Name: TestStatic
MethodTable: 000007fe8fe2c3d8
EEClass: 000007fe8fe18bc8
Size: 24(0x18) bytes
File: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\e22c2559\92c7e946\App_Web_ix1d1jtk.dll
Fields:
MT Field Offset Type VT Attr Value Name
000007feee4f0e08 400000d 28 System.String 0 static 0000000400031900 abc
再来看一下他的字符串成员abc
0:023> !do 0000000400031900
Name: System.String
MethodTable: 000007feee4f0e08
EEClass: 000007feede14860
Size: 48(0x30) bytes
File: C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
String: 11111111111
Fields:
MT Field Offset Type VT Attr Value Name
000007feee4f3980 40000ab 8 System.Int32 1 instance 11 m_stringLength
000007feee4f20f0 40000ac c System.Char 1 instance 31 m_firstChar
000007feee4f0e08 40000ad 18 System.String 0 shared static Empty
Debug Diagnostics Tool创建.Net异常转储并用Windbg分析异常的更多相关文章
- “System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常[WCF]
未处理System.TypeInitializationException HResult=-2146233036 Message=“System.ServiceModel.Diagnostics ...
- 使用Debug Diagnostic Tool排除内存泄漏故障
在我之前的博文中(SQL Server内存泄漏),我解释了如何使用“!heap”命令识别哪个模块泄漏了内存.有时我们使用“!d”命令来找到模型或者使用搜索内存命令(s)不能通过显示内存找到原因. 在这 ...
- 在Window的IIS中创建FTP的Site并用C#进行文件的上传下载
文件传输协议 (FTP) 是一个标准协议,可用来通过 Internet 将文件从一台计算机移到另一台计算机. 这些文件存储在运行 FTP 服务器软件的服务器计算机上. 然后,远程计算机可以使用 FTP ...
- 创建FTP的Site并用C#进行文件的上传下载
创建FTP的Site并用C#进行文件的上传下载 文件传输协议 (FTP) 是一个标准协议,可用来通过 Internet 将文件从一台计算机移到另一台计算机. 这些文件存储在运行 FTP 服务器软件的服 ...
- ArrayList的ConcurrentModificationException异常和多线程下的异常
一.ConcurrentModificationException ArrayList源码看为什么出现异常: public class ArrayList<e> extends Abstr ...
- 十二、jdk工具之jcmd介绍(堆转储、堆分析、获取系统信息、查看堆外内存)
目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...
- Java异常(一)Java异常简介及其框架
Java异常(一)Java异常简介及其框架 概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机 ...
- Java之异常机制(1) - 高效处理异常
Java开发人员做出的有关架构的最重要的决定之一便是如何使用Java异常模型.Java异常处理成为社区中讨论最多的话题之一.一些人认为Java语 言中的已检查异常(Checked Exceptions ...
- NullPointerException异常的原因及java异常??
所谓空指针异常,是因为用空(null)去调用属性或方法. null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常. <--主要有以下几种原因: 1.使用了未 ...
随机推荐
- webpack4 入门(二)
一.管理输出 1.多入口配置 entry: { index1: './src/index.js', index2: './src/index2.js' }, output: { filename: ' ...
- Vue.js 的几点总结Watchers/router key/render
Vue.js 的几点总结,下面就是实战案例,一起来看一下. 第一招:化繁为简的Watchers 场景还原: 1 2 3 4 5 6 7 8 created(){ this.fetchPostLis ...
- Javascript之入门篇(一)
上一篇学习了什么是JavaScript语言及其作用和特有的特点等,本篇将详细介绍JavaScript一些入门使用方式. 对于初学者来讲,由于JavaScript是嵌入到HTML页面里面的,首先创建一张 ...
- Jmeter-无法启动,'findstr'不是内部或外部命令,也不是可运行的程序
今天有一个同事的jmeter无法安装,于是帮他看了看,报以下错误: JAVA的环境变量没有配置好,于是重新配置了下环境变量后,再启动,发现还是不好,于是网上查了下, 发现要在电脑的环境变量中增加 pa ...
- 老男孩Day7作业:选课系统
1.作业需求:角色:学校.学员.课程.讲师 1. 创建北京.上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 3. 课程包 ...
- 10.8 wtx模拟题题解
填坑 orz w_x_c_q w_x_c_q的模拟赛(150pts,炸了) money 题目背景: 王小呆又陷入自己的梦里.(活在梦里...) 题目描述: 王小呆是一个有梦想的小菜鸡,那就是赚好多好多 ...
- python 矩阵(mat)操作
1.矩阵的创建 由一维或二维数据创建矩阵 a1=array([1,2,3]); a1=mat(a1); data1=mat(zeros((3,3))); #创建一个3*3的零矩阵,矩阵这里zeros函 ...
- 4. mybatis 的排序
order by(排序) 的用法 根据哪一个列进行排序 配置文件 mapper.xml 如果是一个列的话就用${value} <select id="selectBlogOrder ...
- Qt 学习之路 2(14):对话框数据传递
Home / Qt 学习之路 2 / Qt 学习之路 2(14):对话框数据传递 Qt 学习之路 2(14):对话框数据传递 豆子 2012年9月15日 Qt 学习之路 2 53条评论 对话框 ...
- MySQL 关联查询 内连接
内连接 [INNER| CROSS] JOIN无条件内连接:无条件内连接,又名交叉连接/笛卡尔连接第一张表种的每一项会和另一张表的每一项依次组合#例:mysql> select * ...