.NET应用程序调试—原理、工具、方法(2)
8.获取Dump文件时的重要注意事项
9.总结
1.背景介绍
随着应用程序的复杂度不断上升,要想将好的设计思想稳定的落实到线上,我们需要具备解决问题的能力。需要具备对运行时的错误进行定位且快速的解决它的能力。本篇文章我将分享一下我对.NET应用程序调试方面的学习和使用总结。
其实对调试程序的使用是不难的,关键是知道它的调试原理才行,因为调试一个程序或者dump文件,都需要了解一定的.NET调试的原理才行,比如你在附加到进程调试时在执行某个SOS扩展命令是需要切换到指定线程上的,而调试dump文件就不需要,但是对Dump文件的分析有些SOS扩展命令是不能用的,类似这样的问题,一旦出现你就一头雾水,所以花点时间学习一下原理是有必要的。
2.基本原理(Windows调试工具箱、.NET调试扩展SOS.DLL、SOSEX.DLL)
在Windows平台上调试应用程序首选Windows调试工具箱,该工具箱包含了一套专门用来针对Windows进行很多复杂场景调试所需要的工具和组件。需要注意的是此工具箱是针对于非托管.NET平台用的,意思就是说此工具箱的所有工具和组件默认是不能够进行.NET应用程序调试的,只能用来对原生Windows程序进行调试。
那么.NET平台也并不是有自己一套专用的调试工具箱,毕竟.NET还是属于Windows平台的,所以很大部分的运行时原理还是基于Windows的,要想在原生的调试器中对.NET这个具有虚拟运行时程序进行调试就需要专门的翻译器才能够执行。SOS.DLL、SOSEX.DLL这两个就是用来对.NET程序在Windows调试工具中起到翻译作用的调试器扩展。简单讲就是,这两个组件是.NET项目组专门开发出来用来对.NET应用程序进行方便调试用的,当然不用这两个扩展也能调试.NET程序,只不过就会很困难,会被很多细节束缚住。有了这个调试扩展之后,我们就可以让原生Windows调试器正确的翻译出.NET相关概念。
图1:(Windows调试工具执行流程)
所有对.NET程序发起的调试会话都要经过.NET调试扩展组件进行翻译才行,也就是要使用.NET调试扩展的调试命令来调试.NET程序。上图中,我们如果要想调试.NET程序就需要将.NET调试扩展组件加载到Windows调试工具中去,然后才能方便在Windows调试工具中使用。
2.1.Windows调试工具箱
Windows调试工具箱中包含了很多调试工具,都是用来辅助于我们进行方便调试用的。Windows调试工具箱分为两个执行版本,X86、X64这两个版本是专门用来分析不同的运行时环境的,如果你的分析环境是32位的你就需要使用X86的版本,同理,如果是用64位的环境就需要使用X64的版本。
下载地址为:http://www.microsoft.com/whdc/devtools/debugging/default.aspx
记住选择你需要的版本,建议你两个版本都下载,因为你随时需要针对Dump文件进行分析,而Dump文件是随时都有可能是两个版本。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>