DotTrace系列:4. 诊断窗体程序变卡之原因分析-牛翰网

DotTrace系列:4. 诊断窗体程序变卡之原因分析

一:背景 1. 讲故事 写这一篇是因为昨天看 dottrace 官方文档时,在评论区看到了一条不友好的评论,截图如下: 虽然语气上带有些许愤怒,但说实话人家也不是无中生有,作为 dottrace 的忠实粉丝...
DotTrace系列:6. 程序异常诊断 和 Request慢处理-牛翰网

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

一:背景 1. 讲故事 在我分析的众多dump中,有一些CPU爆高是因为高频的抛 Exception 导致,比如下面这张图,有 19 个线程都在抛 xxxResultException 异常。 从卦中虽知大量异常的痕迹,但从严谨...
DotTrace系列:8. 时间诊断之 异步代码 和 Task任务-牛翰网

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

一:背景 1. 讲故事 现如今的很多代码都是awaitasync+Task的方式,对它们进行性能洞察非常有必要,awaitasync 本质上就是将状态机塞入到 Task 的 m_continuationObject 延续字段上,和 Continue...
Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露-牛翰网

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

一:背景 1. 讲故事 前面跟大家分享过一篇 C# 调用 C代码引发非托管内存泄露 的文章,这是一个故意引发的正向泄露,这一篇我们从逆向的角度去洞察引发泄露的祸根代码,这东西如果在 windows 上...
对 .NET线程 异常退出引发程序崩溃的反思-牛翰网

对 .NET线程 异常退出引发程序崩溃的反思

一:背景 1. 讲故事 前天收到了一个.NET程序崩溃的dump,经过一顿分析之后,发现祸根是因为一个.NET托管线程(DBG=XXXX)的异常退出所致,参考如下: 0:011> !t ThreadCount: 17 UnstartedTh...
聊一聊 C# 中让人惶恐的 Bitmap-牛翰网

聊一聊 C# 中让人惶恐的 Bitmap

一:背景 1. 讲故事 在.NET高级调试的旅程中,我常常会与 Bitmap 短兵相接,它最大的一个危害就是会让程序抛出匪夷所思的 OutOfMemoryException,也常常会让一些.NET开发者们陷入其中不能自拔,...
12个月前
07812
记一次 .NET某云HIS系统 CPU爆高分析-牛翰网

记一次 .NET某云HIS系统 CPU爆高分析

一:背景 1. 讲故事 年前有位朋友找到我,说他们的系统会偶发性的CPU爆高,有时候是爆高几十秒,有时候高达一分多钟,自己有一点分析基础,但还是没找到原因,让我帮忙看下怎么回事? 二:CPU爆...
记一次 .NET 某零售管理系统 存储不足分析-牛翰网

记一次 .NET 某零售管理系统 存储不足分析

一:背景 1. 讲故事 前几天有位朋友找到我,说他的程序会偶发性的报 存储空间不足,无法处理此命令 的错误,让我帮忙看下到底怎么回事,哈哈,人家是有备而来,dump都准备好了,话不多说,直接...
12个月前
03012
记一次 .NET某工控WPF程序被人恶搞的 卡死分析-牛翰网

记一次 .NET某工控WPF程序被人恶搞的 卡死分析

一:背景 1. 讲故事 这一期程序故障除了做原理分析,还顺带吐槽一下,熟悉我的朋友都知道我分析dump是免费的,但免费不代表可以滥用我的宝贵时间,我不知道有些人故意恶搞卡死是想干嘛,不得而...
12个月前
06012
聊一聊 .NET高级调试 中的一些内存术语-牛翰网

聊一聊 .NET高级调试 中的一些内存术语

一:背景 1. 讲故事 在高级调试的旅程中,经常会有一些朋友问我什么是 工作集(内存),什么是 提交大小,什么是 Virtual Size, 什么是 Working Set 。。。截图如下: 既然有很多朋友问,这些用口...
12个月前
04612