写点什么

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

  • 2013-11-11
  • 本文字数:859 字

    阅读完需:约 3 分钟

当.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

2013-11-11 07:281217
用户头像

发布了 321 篇内容, 共 124.4 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

leetcode 696. Count Binary Substrings 计数二进制子串(简单)

okokabcd

LeetCode 算法与数据结构

Kubernetes 微服务接口设计原则

CTO技术共享

架构实战训练营|毕业总结

Roy

架构实战营

每日一 R「18」类型系统进阶(二)

Samson

学习笔记 8月月更 ​Rust

Git -- 入门这一篇就够了 (入门必备,超硬核)

计算机魔术师

8月月更

Mimir 速体验(Part 3): 通过 runtime 配置实现租户细粒度管理

Grafana 爱好者

可观测性 Grafana Mimir

【实践】高性能PHP应用容器workerman快速入门

迷彩

即时通讯 通讯协议 8月月更 workerman 高性能php

设计电商秒杀系统

Geek_7a789a

阿里巴巴、华为教你如何把数据真正用起来 | DBT How

王和全

华为 数据中台 数字化转型 数据运营 证券行业

架构实战营心得

阿拉阿拉幽幽

MySQL数据库之数据查询

乌龟哥哥

8月月更

Mimir 速体验(Part 2): 使用 Grafana agent 实现多租户数据抓取

Grafana 爱好者

Prometheus Mimir

快速搭建 SpringCloud Alibaba Nacos 配置中心!

王磊

spring cloud alibaba

Mimir 源码分析(三):任意时间范围乱序数据写入

Grafana 爱好者

Mimir

vue2 el-checkbox实现分组全选/反选/半选

Mr.Cactus

Element UI JavaScrip 分组全选

电商秒杀系统设计

Roy

架构实战营

Mimir 速体验(Part 1): 使用 docker-compose 一键部署单体版集群

Grafana 爱好者

可观测性 Prometheus Mimir

监控系统夜莺分布式部署方案

CTO技术共享

Spring避坑指南:Spring声明式事务@Transactional避坑

崔认知

Spring避坑指南 避坑指南 @Transactional避坑

Mimir 源码分析(一):海量series chunk 同时落盘带来的挑战

Grafana 爱好者

Mimir

番外篇 of 《Mimir 源码阅读(三): 任意乱序数据的写入》

Grafana 爱好者

Mimir

架构实战营模块 8 作业

Roy

架构实战营

什么是 Golang?[译]

宇宙之一粟

毕业总结

Geek_7a789a

消息队列选型对比

CTO技术共享

架构师学习毕业总结

Pengfei

融齐鲁,行中国,为天下溪:新华三的数字化赋能之路

脑极体

架构实战营模块 7 作业

Roy

架构实战营

毕业设计 - 电商秒杀项目

阿拉阿拉幽幽

【小程序 | 启航篇】一文打通任督二脉

计算机魔术师

8月月更

Mimir 源码分析(二):效率爆棚的分片压缩

Grafana 爱好者

Mimir

Rodney Viana为.NET调试开发的WinDbg 扩展介绍_.NET_Jonathan Allen_InfoQ精选文章