使用Windbg和SoS扩展调试分析.NET程序
在博客堂的不是我舍不得 - High CPU in GC(都是+=惹的祸,为啥不用StringBuilder呢?)、 不是我舍不得 - .NET里面的Out Of Memory 看到很多人在问如何分析dump,所以就写下了这篇短文,抛砖引玉。
一、安装 DebuggingToolsforWindows: 从以下 Microsoft 网站下载 DebuggingToolsforWindows:http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx,微软经常更新DebuggingToolsforWindows工具的,所以我们下载一个最新版本的,把DebuggingToolsforWindows 安装到 C:\Debuggers 文件夹,从命令行中运行工具需要一个简短的路径,这样更加容易使用。
二、为 WinDbg 中设置符号路径:
1.打开 WinDbg。
2.在 文件 菜单上, 单击 符号文件路径 。
3.在 符号路径 对话框中, 键入以下符号路径: srv*c:\symbols*http://msdl.microsoft.com/download/symbols
4.关闭 WinDbg, 然后键入 是 Yes ,以保存基本区信息。
三、SOS 扩展
SOS.dll 中提供的 Son of Strike 扩展 (SOS),用于调试 WinDbg 中的托管代码。在启动了调试程序并将其附加到托管进程(或加载故障转储)后,您可以通过键入以下代码加载 SOS.dll:
.loadby sos mscorwks
如果您正在调试的应用程序使用的是不同版本的 mscorwks.dll,则该命令无法执行,那么应找到该应用程序使用的 mscorwks.dll 版本的 SOS.dll,然后运行以下命令:
.load <path_to_sos>\sos.dll
SOS.dll 随 .NET Framework 安装在 %windir%\microsoft.net\framework\<.NET 版本> 目录下。SOS.dll 扩展提供了大量用于检查托管堆的有用命令。有关所有这些命令的文档,请参阅 SOS 调试扩展 (SOS.dll)。
四、相关的资料:如何调试分析,有几篇非常不错的文章,大家自己慢慢去品味吧。
CLR 完全介绍: http://msdn.microsoft.com/msdnmag/issues/06/11/CLRInsideOut/default.aspx?loc=zh
深入探索.NET框架内部了解CLR如何创建运行时对象:http://www.microsoft.com/china/MSDN/library/netFramework/netframework/JITCompiler.mspx?mfr=true
!dumpheap -gen in ,NET 2.0 SOS that Ships with the Framework: http://dotnetdebug.blogspot.com/2006/12/dumpheap-gen-in-net-20-sos-that-ships.html
在托管代码中设置断点(WINDBG) http://blog.joycode.com/gangp/articles/20417.aspx
NET Framework 2.0 在内存中加载 Sos.dll 文件时 Windows 错误报告崩溃 FIX:http://support.microsoft.com/kb/913382/zh-cn
SOS Debugging with the CLR :http://blogs.msdn.com/jasonz/archive/2003/10/21/53581.aspx
发现并防止托管代码中出现内存泄漏http://msdn.microsoft.com/zh-cn/magazine/cc163491.aspx
关于异常的疑难解答:System.OutOfMemoryException http://msdn.microsoft.com/zh-cn/library/9w766t6y(VS.80).aspx
使用Windbg和SoS扩展调试分析.NET程序的更多相关文章
- CLR探索系列:Windbg+SOS动态调试分析托管代码
http://blog.csdn.net/garyye/article/details/4788070 在使用VS进行托管应用程序的调试的时候,有的时候总感觉有些力不从心.譬如查看一个托管堆或者计 ...
- VS里用Sos扩展调试CLR总结
暂时不用Windbg,用VS来调试CLR. 1) Enable unmanaged debugging 2) Load sos.dll into vs. !DumpHead -type SimpleC ...
- WinDbg 之 SOS扩展命令
SOS.dll (SOS debugging extension) The SOS Debugging Extension (SOS.dll) helps you debug managed prog ...
- WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDb ...
- WinDbg调试分析 net站点 CPU100%问题
WinDbg调试分析 asp.net站点 CPU100%问题 公司为了节省成本,最近有一批服务器降了配置,CPU从8核降到了2核.本身是小站点,访问量也不高,CPU总是会飙到100%而且可以一直持续几 ...
- VisualStudio中集成扩展调试SOS
SOS扩展也是可以和VisualStudio进行集成的,这样真的方便了我们调试一些性能要求比较高的程序,当程序运行一段时间后我们用VS附加到进程,然后查看一些重要的对象数据,但是此时我们看不到.NET ...
- 在WinDbg里使用MEX调试扩展
简介 针对WinDbg的MEX调试扩展可以帮助您简化常见的调试器任务,并为调试器提供强大的文本筛选功能.此扩展被Microsoft支持工程师广泛用于解决流程应用程序的故障. 下载&安装 下载m ...
- 用Windbg来分析.Net程序的dump
介绍 1. 什么是Windbg WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件. WinDbg是微 ...
- 内存不足(OutOfMemory)的调试分析
32位操作系统的寻址空间是4G,其中有2G被操作系统占用,也就是说留给用户进程的内存只有2G(其中还要扣除程序加载时映像占用的部分空间,一般只有1.6G~1.8G左右可以使用). 如果进程运行中需要申 ...
随机推荐
- bzoj2788
明显是一个差分约束系统 对于第一种限制,其实就是x[a]+1<=x[b] x[b]-1<=x[a] 根据三角不等式很容易建图 但这题他比较奇怪,问的是X最多不同取值的个数 根据这张图的特殊 ...
- [swustoj 785] Divide Tree
Divide Tree(0785) 问题描述 As we all know that we can consider a tree as a graph. Now give you a tree wi ...
- linux 服务自动调用
php服务地址: http://192.168.2.117/web/index.php/buy/auctionselect 编写脚本service.sh,内容: #! /bin/sh crul htt ...
- eclipse export Android jar with jni
/*********************************************************************** * eclipse export Android ja ...
- ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking
#!/bin/bash # # ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking # 说明: # 本文主 ...
- 【解决方案】jquery live的change事件在IE下失效
$("#spanChildSec select").live("change", function () { //处理内容 ...
- 最简单的视音频播放示例8:DirectSound播放PCM
本文记录DirectSound播放音频的技术.DirectSound是Windows下最常见的音频播放技术.目前大部分的音频播放应用都是通过DirectSound来播放的.本文记录一个使用Direct ...
- Servlet,JDBC,JSONObject三者配和处理客户端请求并返回正确的json数据
JSON简介 首先我们来理解json(JavaScript Object Notation),如果你熟悉python的字典结构和列表结构,其实json格式是非常容易理解的,当然不熟也不难理解,网上的资 ...
- [Papers]NSE, $\p_3u$, Lebesgue space [Penel-Pokorny, AM, 2004]
$$\bex \p_3\bbu\in L^p(0,T;L^q(\bbR^3)),\quad \frac{2}{p}+\frac{3}{q}=\frac{3}{2},\quad 2\leq q\leq ...
- [Everyday Mathematics]20150128
求极限 $$\bex \lim_{x\to 0}\sex{\frac{e^x+e^{2x}+\cdots+e^{nx}}{n}}^\frac{1}{x}. \eex$$