windbg
文章平均质量分 78
juqiang
喜欢做service,帮助客户解决问题,提升信息产品的价值。
展开
-
Basic Windbg - 导读
导读: 为什么我们需要debug?原因大概有几个,几乎都是在生产环境下,我们解决不了的: 1、系统就是慢。稍微懂点的客户,拿taskmgr一看,说你的aspnet_wp.exe或者w3wp.exe占用cpu太高,或者内存太高,dba到sql里面一看,说cpu太高。sql的我以前写过,这里不讲,对于前者.net的程序,你怎么处理? 2、cpu很低,内存很平稳,系统就是慢,你怎么处理?原创 2008-03-12 16:17:00 · 490 阅读 · 0 评论 -
网站High CPU分析
网站升级后,说有High CPU的问题。mstsc上去后,看了一下,果然如此,w3wp.exe的cpu几乎一直是满的,我的远程桌面操作也很慢。下载下来windbg,装好,抓了两个dump。首先!runaway一下,0:022> !runaway User Mode Time Thread Time 22:8cc 0 days 0:17:15.238 23:4d8原创 2008-03-12 16:44:00 · 1339 阅读 · 1 评论 -
Basic Windbg - 1. SOSBasics(续)
书接上回,我们开始看另外几个命令。大家如果注意看我的代码,能发现里面既有value type,也有reference type。那么,我怎么查看,当前线程状态下,我的那些变量的信息呢?对于托管代码而言,最核心的命令就是!do(dump object的缩写),这个!do后面是要加上你要看的变量的地址的。那么,我怎么知道我的变量的地址呢?先来看另外一个命令,!dso(Dump Stack Object原创 2008-03-12 16:34:00 · 671 阅读 · 0 评论 -
Basic Windbg - 2 CLR基础
调整一下写的思路,第一部分的sos basics继续有效,原定的crash/hang/memory等,序号顺延,中间插入这个clr basics创建一个控制台程序,代码如下:Codeusing System;using System.Collections.Generic;using System.Text;namespace HelloWindbg{ class Program原创 2008-03-12 16:41:00 · 804 阅读 · 0 评论 -
Basic Windbg - 1. SOSBasics(总结)
我们都知道,对于字符串相加,建议使用StringBuilder,而不是普通的string concat,为什么呢?我们通过dump简单看一下。先看这个代码:CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1using System; 2u原创 2008-03-12 16:39:00 · 526 阅读 · 0 评论 -
System.Data.SQLClient.SqlConnection在Open之后为什么需要及时Close?
如果System.Data.SQLClient.SqlConnection(下面简称dbconn)不及时Close,那么造成的后果可以在这里看到:http://www.cnblogs.com/juqiang/archive/2005/12/10/294269.html具体的原因,我们来看代码(用reflector反编译.net framework 2.0的dll)dbconn有一个方法叫做:Ope原创 2008-03-12 16:43:00 · 1637 阅读 · 0 评论 -
XmlSerializer带来的性能问题及解决办法
(本文中的思路、二元hashtable等,大力感谢Leo Chen的帮助!)对于XmlSerializer带来的内存占用过高,最终导致Out Of Memory的问题,参见以前这个链接:http://www.cnblogs.com/juqiang/archive/2008/01/15/1039936.html(但是那篇文章中对于XmlSerializer构造方法的说明,是错误的。那段代码没有问题,原创 2008-03-12 16:45:00 · 1965 阅读 · 0 评论 -
Basic Windbg - 1. SOSBasics(再续)
我们的查看对象之旅,还远没有结束。继续按照前前一篇的代码来扒皮。上节讲的是通过!dso,找到所有stack上的东西,下面我们看heap上的东西。首先,整体上先来了解一下。我们这里会用一个新命令,叫做!eeheap(叹号+eeheap)。它有两个参数,一个叫-gc,一个叫-loader。后者,葡萄在他的书里面写过一个case,因为load的东西太多,造成了内存巨量的碎片,导致OOM出现。对于前者,会原创 2008-03-12 16:37:00 · 490 阅读 · 0 评论