.NET高级调试 - 3.12 sosex实用的几个命令介绍
简介
sosex是sos的一个拓展,主要目的是将一些繁琐的排查过程脚本化,比如探测死锁,设置断点等。更加方便快捷协助我们排查问题.
比较可惜的是,在.net core中不可用,作者已经不更新了。
更多的命令可以使用!sosex.help 查看帮助

断点加强
原来的bp命令操作起来优点麻烦,还有区分jit有没有编译等因素。而sosex可以管理断点列表,并且可以在任一行上设置断点
!mbl 列出所有断点
sosex维持了一张断点列表,如果断点是通过sosex来设置的,那么它将会被记录在案

- !mbc清除指定断点或者所有断点
- !mbd禁用指定断点或者所有断点
- !mbe启用指定断点或者所有断点
!mbl 设置断点

!mbm 无源码设置断点
如果是动态生成的代码,无法确切知道代码地址。那么该命令可以在特定类型指定IL便宜处设置一个断点。
观察对象布局
一般用!do(DumpObj)命令观察一个对象的时候,只能看到一层。如果你的对象是嵌套了好几层。那就一层一层的敲命令。很不方便


!mdt

相对于使用do,嵌套越深,就越方便
使用!sosex.help mdt 来查看更多用法
搜索托管堆中的字符串
!strings /m:xxxxxx

搜索元数据
使用name2ee 搜索比较麻烦 ,需要模块名+方法名。 我们需要准确的信息。如果我们想模糊搜索呢?
!mx

两者孰优孰劣,一目了然

并且数据也比较全,避免自己敲太多命令
!mln
调用栈加强
!mk
k命令显示非托管代码调用栈,clrstack显示托管代码调用栈。dumpstack同时显示托管与非托管。sos的mk命令是对k命令的加强。
除了会显示托管代码调用栈外,还会显示栈帧的编号

观察Free块
!mfrag
主要用于分析内存碎片化

死锁检测
!dlk
一键检测死锁,方便快捷

否则要先用!syncblk查看同步块,然后再看!clrstack 查看调用堆栈。再判断是否形成死锁。这中间需要自己换算,比较麻烦

总结
sosex是对sos的加强,由于.net core中无法使用。所以主要还是熟练掌握sos命令为主。
.NET高级调试 - 3.12 sosex实用的几个命令介绍的更多相关文章
- [Android Studio 权威教程]断点调试和高级调试
好了开始写一个简单的调试程序,我们先来一个for循环 ? 1 2 3 4 5 6 7 8 <code class="language-java hljs ">for ( ...
- ###Android 断点调试和高级调试###
转自:http://www.2cto.com/kf/201506/408358.html 有人说Android 的调试是最坑的,那我只能说是你不会用而已,我可以说Android Studio的调试是我 ...
- Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序
系列目录 [已更新最新开发文章,点击查看详细] 要调试已部署到IIS的ASP.NET应用程序,请在部署应用程序的计算机上安装并运行远程工具,然后从Visual Studio附加到正在运行的应用 ...
- 12个实用的 Javascript 奇淫技巧
这里分享12个实用的 Javascript 奇淫技巧.JavaScript自1995年诞生以来已过去了16个年头,如今全世界无数的网页在依靠她完成各种关键任务,JavaScript曾在Tiobe发布的 ...
- 12 条实用的 zypper 命令范例 (转载)
12 条实用的 zypper 命令范例 作者: Kerneltalks 译者: LCTT cycoe | 2018-12-12 13:29 zypper 是 Suse Linux 系统的包和补丁管理器 ...
- Android Stuido中断点调试和高级调试
写一个简单的调试程序 import android.os.Bundle; import android.support.v7.app.AppCompatActivity; public class M ...
- Linux高级调试与优化——gdb调试命令
番外 2019年7月26日至27日,公司邀请<软件调试>和<格蠹汇编——软件调试案例集锦>两本书的作者张银奎老师进行<Linux高级调试与优化>培训,有幸聆听张老师 ...
- .NET高级调试系列-Windbg调试入门篇
Windbg是.NET高级调试领域中不可或缺的一个工具和利器,也是日常我们分析解决问题的必备.准备近期写2篇精华文章,集中给大家分享一下如果通过Windbg进行.NET高级调试. 今天我们来一篇入门的 ...
- 玩好.NET高级调试,你也要会写点汇编
一:背景 1. 简介 .NET 高级调试要想玩的好,看懂汇编是基本功,但看懂汇编和能写点汇编又完全是两回事,所以有时候看的多,总手痒痒想写一点,在 Windows 平台上搭建汇编环境不是那么容易,大多 ...
- 妈咪,我找到了! -- 15个实用的Linux find命令示例
妈咪,我找到了! -- 15个实用的Linux find命令示例 英文原文:Mommy, I found it! — 15 Practical Linux Find Command Examples ...
随机推荐
- 【XML】Extensible Markup Language 可扩展标记语言
Extensible Markup Language 可扩展标记语言[XML] 视频资料参考自:https://www.bilibili.com/video/BV1B441117Lu?p=186 其他 ...
- 【C】Re11 剩下的笔记
关于字符常量问题: #include <stdio.h> #include <stdlib.h> #include <string.h> void string01 ...
- 【Shiro】01 概述 & 快速上手
什么是Shiro? Apache Shiro 是Java的一个权限安全框架 一些功能:认证.授权.加密.会话管理.与Web 集成.缓存等 Shiro官网地址:[ 点击访问 ] http://shi ...
- 【Windows】XP系统安装TIM/QQ 数字签名过期问题
需要手动安装数字签名 右键安装包 -> 属性 但是我的TIM没有用,对QQ是有效的 参考自视频: https://www.bilibili.com/video/av413122971/
- 【JavaScript】前端算法题 40道题+解析
前言 最近练习了一些前端算法题,现在做个总结,以下题目都是个人写法,并不是标准答案,如有错误欢迎指出,有对某道题有新的想法的友友也可以在评论区发表想法,互相学习 题目 题目一: 二维数组中的查找: 在 ...
- 华为超算平台git、cmake、wget、curl报错:SSLv3_client_method version OPENSSL_1_1_0 not defined in file libssl.so.1.1 with link time reference——解决方法
最近在使用超算平台时报错,不管是git.cmake.wget.curl中的哪个都报错,大致错误: /usr/bin/cmake3: relocation error: /usr/lib64/libcu ...
- Java IO 流详解
概述 流是一个抽象的概念,代表了数据的无结构化传递.流的本质是数据在不同设备之间的传输.在 Java 中,数据的读取和写入都是以流的方式进行的 在 Java 中,根据数据流向的不同,可以将流分为输入( ...
- apollo配置动态更新
简单配置 使用@Value注解的配置会自动刷新配置 复杂对象 @Component("systemConfig") @ConfigurationProperties(prefix ...
- android 播放视频页面黑屏,且报错:Couldn't open 'xxxxxx' java.io.FileNotFoundException: No content provider:
原因为,activity的顶部布局,VideoView设定了android:background="@color/bg_black"去掉就可以了 之前跑着都正常,改了UI后就没有去 ...
- hashmap组成原理及调用时机
整个HashMap中最重要的点有四个:初始化,数据寻址-hash方法,数据存储-put方法,扩容-resize方法,只要理解了这四个点的原理和调用时机,也就理解了整个HashMap的设计. 如果有疑惑 ...