BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Rodney Viana为.NET调试开发的WinDbg 扩展介绍

| 作者 Jonathan Allen 关注 615 他的粉丝 ,译者 孙镜涛 关注 2 他的粉丝 发布于 2013年11月12日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

当.NET应用程序在产品环境中发生故障的时候,通常留给开发者的仅仅是一个内存dump。因为Visual Studio不能处理dump文件,所以你必须使用一个名为WinDbg的工具。该工具通常会和SOS.dll或者Psscor4.dll一起使用,它们是能够暴露.NET特定细节的扩展。尽管非常强大,但是它们非常难于使用,因此开发者偶尔会创建自己的扩展。Rodney Viana就是这样的一个开发者,他刚刚发布了netext 1.6.1并将该项目开源。

Netext中的一个有趣功能是,它能够使用一种类似于SQL的语法查询堆。例如,假如你想要查看最近失败的Web请求的列表,因为HttpContext对象已经被缓存了,所以你能够使用下面的语法查看失败的查询:

!wfrom -type *.HttpContext |
where ( ($contains(_request._url.m_String, "http:")) && 
(_response._statuscode != 0n200) ) 
select $addr(), _request._url.m_String, _response._statusCode

下面是支持的命令列表:

显示对象详细信息的命令

  • !wdo——显示GAC或者堆栈中的ad-hoc对象或者数组
  • !wselect——为数组中的一个对象或者所有条目显示ad-hoc字段(和level字段)
  • !wfrom——执行类似SQL的堆对象分析,支持比较、表达式评估和索引过滤

枚举对象

  • !windex——根据不同的过滤器索引并显示对象,例如HttpContext类型的对象
  • !wstack——转储唯一的堆栈对象
  • !wheap——列出没有索引的对象并显示堆样本
  • !wgchandles——转储GC根句柄

特殊用途

  • !wdict——显示dictionary对象
  • !whash——显示HashTable对象
  • !whttp——列出HttpContext对象
  • !wconfig——显示所有排列在内存中的.config文件
  • !wservice——列出WCF服务对象
  • !weval——评估表达式列表
  • !wclass——显示“反射的”类定义(字段、属性和方法)

Netext还支持能够和聚合、字符串、XML、数组和反射一起使用的功能

Netext是基于GNU通用公共许可(GNU General Public License)版本2提供的。尽管Rodney Viana是Microsoft的一位雇员,但该项目是一个个人项目,Microsoft并不为其提供支持。

查看英文原文Introducing Rodney Viana’s WinDbg Extension for .NET Debugging

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

gitHub帐号做个任务,30元,支付宝交易,谢谢帮忙 by lv san

帐号要求2013年5月1日前注册,并发布过东西
任务主要流程:登录github,关注那个开源代码,然后就能生成code了
详细介绍文章:百度空间链接地址
如果以上地址访问不了,你还可以试试这个地址:印象笔记链接地址

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT