首页 > 其他分享 >.NET高级调试 - sosex实用的几个命令介绍

.NET高级调试 - sosex实用的几个命令介绍

时间:2024-09-29 17:22:32浏览次数:6  
标签:托管 sos 命令 死锁 NET 断点 调试 sosex

简介

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

断点加强

原来的bp命令操作起来优点麻烦,还有区分jit有没有编译等因素。而sosex可以管理断点列表,并且可以在任一行上设置断点

!mbl 列出所有断点

sosex维持了一张断点列表,如果断点是通过sosex来设置的,那么它将会被记录在案
image

  1. !mbc清除指定断点或者所有断点
  2. !mbd禁用指定断点或者所有断点
  3. !mbe启用指定断点或者所有断点

!mbl 设置断点

image

!mbm 无源码设置断点

如果是动态生成的代码,无法确切知道代码地址。那么该命令可以在特定类型指定IL便宜处设置一个断点。

观察对象布局

一般用!do(DumpObj)命令观察一个对象的时候,只能看到一层。如果你的对象是嵌套了好几层。那就一层一层的敲命令。很不方便
image
image

!mdt

image

相对于使用do,嵌套越深,就越方便
使用!sosex.help mdt 来查看更多用法

搜索托管堆中的字符串

!strings /m:xxxxxx

image

搜索元数据

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

!mx


两者孰优孰劣,一目了然

image
并且数据也比较全,避免自己敲太多命令

!mln

调用栈加强

!mk

k命令显示非托管代码调用栈,clrstack显示托管代码调用栈。dumpstack同时显示托管与非托管。sos的mk命令是对k命令的加强。
除了会显示托管代码调用栈外,还会显示栈帧的编号
image

观察Free块

!mfrag

主要用于分析内存碎片化
image

死锁检测

!dlk

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

总结

sosex是对sos的加强,由于.net core中无法使用。所以主要还是熟练掌握sos命令为主。

标签:托管,sos,命令,死锁,NET,断点,调试,sosex
From: https://www.cnblogs.com/lmy5215006/p/18440017

相关文章

  • 华三设备的用户创建、ssh、telnet等的配置
    sshserverenabletelnetserverenablepublic-keylocalcreatersapublic-keylocalcreatedsauser-interfacevty04authentication-modeschemeprotocolinboundsshqulocal-usertonyclassmanagepasswordsimpleroot#12345service-typeterminalsshteln......
  • 从0到1搭建权限管理系统系列四 .net8 中Autofac的使用(附源码)
    说明  该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。   该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。   说明:OverallAuth2.0是一个简单、易懂、功能强大的权限+可视化流程管理系统。友情提醒:本篇文章是属于系......
  • pbootcms后台UEditor编辑器默认给magnet、ed2k等链接加http://的解决问题
    在PbootCMS中,使用UEditor编辑器添加磁力链接(magnet:)或电驴链接(ed2k:)时,编辑器会自动添加http://前缀,导致链接无法正常使用。可以通过修改UEditor编辑器的相关文件来解决这个问题。解决方法步骤1:修改UEditor编辑器文件打开文件:打开core/extend/ueditor/dialogs/link/link.ht......
  • 吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.5-2.
    目录第四门课卷积神经网络(ConvolutionalNeuralNetworks)第二周深度卷积网络:实例探究(Deepconvolutionalmodels:casestudies)2.5网络中的网络以及1×1卷积(NetworkinNetworkand1×1convolutions)2.6谷歌Inception网络简介(Inceptionnetworkmotivation)......
  • .NET高级调试 - 代码审查以及杂项命令
    简介代码审查就是观察代码,代码形态分为三种C#代码>IL代码》汇编代码。通过代码审查,可以从原始代码的字节流中推测出逻辑详情高级调试本质上属于逆向分析,更多的是以汇编为主。反汇编代码u(unassemble)命令u把字节流反汇编为汇编指令还有一个变种ub,uf。u是向下反汇编,ub是向......
  • YOLOv8改进 - 注意力篇 - 引入(A2-Nets)Double Attention Networks注意力机制
    一、本文介绍作为入门性篇章,这里介绍了A2-Nets网络注意力在YOLOv8中的使用。包含A2-Nets原理分析,A2-Nets的代码、A2-Nets的使用方法、以及添加以后的yaml文件及运行记录。二、A2-Nets原理分析A2-Nets官方论文地址:A2-Nets文章A2-Nets注意力机制(双重注意力机制):它从输入图......
  • skynet框架:批量服务管理方案
    skynet很经典的用法是节点内会有批量的服务跑相同的模块逻辑。服务的生命周期管理显然是跟业务强关联的,需要根据实际业务对应做适配的生命周期管理方案。显然最直接的方案就是服务常驻,跟进程的生命周期同步,当服务的数量级不大时,认为消耗可控,方案是适用的,也避免过度设计。这里想谈......
  • .NET跨平台绘图基础库--SkiaSharp
    .NET跨平台绘图基础库--SkiaSharp SkiaSharp是一个跨平台的2D图形API,用于.NET平台,基于Google的Skia图形库。它提供了全面的2DAPI,可以在移动、服务器和桌面模型上渲染图像。SkiaSharp可以在多个.NET平台上使用,包括ASP.NETCore、WPF、Winform、MAUI、Avalonia......
  • .NET 开源高性能 MQTT 类库
    阅读目录前言项目介绍功能说明功能特点应用场景使用方法项目地址总结最后前言随着物联网(IoT)技术的迅猛发展,MQTT(消息队列遥测传输)协议凭借其轻量级和高效性,已成为众多物联网应用的首选通信标准。MQTTnet作为一个高性能的.NET开源库,为.NET平台上的MQTT客户端......
  • .Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器
    .Net6WebApi项目部署到Linux系统上的Docker容器 1.创建一个基础的WebApi项目  注意:因为发布时候,Dockerfile文件必须和解决方案.cspro文件放在同级,所以建议勾上这个,当时遇到这个问题,导致打包镜像时找不到.cspro文件,搞了好久  点击创建,项目基础框架是这样......