DotTrace系列:1. 理解四大经典的诊断类型(上)-牛翰网

DotTrace系列:1. 理解四大经典的诊断类型(上)

一:背景 1. 讲故事 在所有与 .NET相关的JetBrains产品中,我觉得 DotTrace 是最值得深入学习和研究的一款,个人觉得它的优点如下: 跨平台诊断 (Windows,Linux,MacOS) 兼容 dotnet-trace 产出...
.NET外挂系列:4. harmony 中补丁参数的有趣玩法(上)-牛翰网

.NET外挂系列:4. harmony 中补丁参数的有趣玩法(上)

一:背景 1. 讲故事 前面几篇我们说完了 harmony 的几个注入点,这篇我们聚焦注入点可接收的几类参数的解读,非常有意思,在.NET高级调试 视角下也是非常重要的,到底是哪些参数,用一张表格整...
.NET外挂系列:1. harmony 基本原理和骨架分析-牛翰网

.NET外挂系列:1. harmony 基本原理和骨架分析

一:背景 1. 讲故事 为什么要开这么一个系列,是因为他可以对 .NET SDK 中的方法进行外挂,这种技术对解决程序的一些疑难杂症特别有用,在.NET高级调试 领域下大显神威,在我的训练营里也是花了...
Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露-牛翰网

Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露

一:背景 1. 讲故事 前面跟大家分享过一篇 C# 调用 C代码引发非托管内存泄露 的文章,这是一个故意引发的正向泄露,这一篇我们从逆向的角度去洞察引发泄露的祸根代码,这东西如果在 windows 上...
记一次 .NET某电商医药网站 CPU爆高分析-牛翰网

记一次 .NET某电商医药网站 CPU爆高分析

一:背景 1. 讲故事 准备明年把.NET高级调试的训练营的课程进行重构,采用案例引导式,而CPU爆高类有不少是程序员在写代码的时候不注意时间复杂度,在数据量稍微大一点的情况直接幻化成了死循环...
MinHook 如何对 .NET 母体 CoreCLR 进行拦截-牛翰网

MinHook 如何对 .NET 母体 CoreCLR 进行拦截

一:背景 1. 讲故事 这篇文章起源于和一家 .NET公司 开线上会议时,提出的一个场景问题,程序出现了非托管内存暴涨,这些非托管内存关联的对象都囤积在 终结器队列 中,很显然这是代码中没用 us...
DotTrace系列:9. 大结局之 跨平台 和 自定义行为 诊断-牛翰网

DotTrace系列:9. 大结局之 跨平台 和 自定义行为 诊断

一:背景 1. 讲故事 本篇是系列的最后一篇,我们从跨平台部署和自定义诊断的角度跟大家聊一聊 dottrace,希望对大家有所启发。 二:跨平台和自定义诊断 1. 如何跨平台诊断分析 如果 dottrace 只...
DotTrace系列:8. 时间诊断之 异步代码 和 Task任务-牛翰网

DotTrace系列:8. 时间诊断之 异步代码 和 Task任务

一:背景 1. 讲故事 现如今的很多代码都是awaitasync+Task的方式,对它们进行性能洞察非常有必要,awaitasync 本质上就是将状态机塞入到 Task 的 m_continuationObject 延续字段上,和 Continue...
DotTrace系列:7. 诊断 托管和非托管 内存暴涨-牛翰网

DotTrace系列:7. 诊断 托管和非托管 内存暴涨

一:背景 1. 讲故事 分析托管和非托管内存暴涨,很多人潜意识里都会想到抓dump上windbg分析,但我说可以用dottrace同样分析出来,是不是听起来有点让人惊讶,哈哈,其实很正常,它是另辟蹊径采...
DotTrace系列:6. 程序异常诊断 和 Request慢处理-牛翰网

DotTrace系列:6. 程序异常诊断 和 Request慢处理

一:背景 1. 讲故事 在我分析的众多dump中,有一些CPU爆高是因为高频的抛 Exception 导致,比如下面这张图,有 19 个线程都在抛 xxxResultException 异常。 从卦中虽知大量异常的痕迹,但从严谨...