会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
5
6
···
46
下一页
2025年8月12日
记一次 .NET 某汽车控制焊接软件 卡死分析
摘要: 一:背景 1. 讲故事 前些天有位朋友找到我,说他们开发的在客户工厂里的窗体程序出现了卡死情况,并且 Ctrl+C 也退不出来,自己分析了下也没找出是什么原因,后来在网络上就找到了我,让我帮忙看下怎么回事? 毕竟我在这一块是专业的。。。 哈哈,既然有dump,那就拿出来分析一下。 二:卡死分析 1.
阅读全文
posted @ 2025-08-12 11:08 一线码农
阅读(1640)
评论(5)
推荐(13)
2025年8月5日
对 .NET线程 异常退出引发程序崩溃的反思
摘要: 一:背景 1. 讲故事 前天收到了一个.NET程序崩溃的dump,经过一顿分析之后,发现祸根是因为一个.NET托管线程(DBG=XXXX)的异常退出所致,参考如下: 0:011> !t ThreadCount: 17 UnstartedThread: 0 BackgroundThread: 16 P
阅读全文
posted @ 2025-08-05 11:10 一线码农
阅读(1258)
评论(0)
推荐(15)
2025年8月1日
记一次 .NET 某智能视觉软件 句柄爆高分析
摘要: 一:背景 1. 讲故事 前几天高级调试训练营里的一位学员找到我,说他们的程序句柄爆高,经过自己分析之后发现是几百万的 process 句柄,截图如下: 说实话,第一眼看到有这么多的 process 句柄还是挺震惊的,在我的400+dump分析之旅中还是从未见过,这也给了我很大的好奇心,接下来我们就来
阅读全文
posted @ 2025-08-01 11:48 一线码农
阅读(855)
评论(2)
推荐(15)
2025年7月2日
MinHook 如何对 .NET 母体 CoreCLR 进行拦截
摘要: 一:背景 1. 讲故事 这篇文章起源于和一家 .NET公司 开线上会议时,提出的一个场景问题,程序出现了非托管内存暴涨,这些非托管内存关联的对象都囤积在 终结器队列 中,很显然这是代码中没用 using 及时释放引发的,而这块代码又是第三方组件,你想加也加不了,所以提出了一个设想:能不能设法干预 终
阅读全文
posted @ 2025-07-02 17:11 一线码农
阅读(780)
评论(5)
推荐(8)
2025年6月30日
DotTrace系列:9. 大结局之 跨平台 和 自定义行为 诊断
摘要: 一:背景 1. 讲故事 本篇是系列的最后一篇,我们从跨平台部署和自定义诊断的角度跟大家聊一聊 dottrace,希望对大家有所启发。 二:跨平台和自定义诊断 1. 如何跨平台诊断分析 如果 dottrace 只能在 windows 平台上跑,那确实不值得写一个系列,目前它可以横跨三大平台(Windo
阅读全文
posted @ 2025-06-30 15:05 一线码农
阅读(436)
评论(3)
推荐(1)
DotTrace系列:8. 时间诊断之 异步代码 和 Task任务
摘要: 一:背景 1. 讲故事 现如今的很多代码都是awaitasync+Task的方式,对它们进行性能洞察非常有必要,awaitasync 本质上就是将状态机塞入到 Task 的 m_continuationObject 延续字段上,和 ContinueWith 没有本质区别,这一篇我们就来聊一聊。 二:
阅读全文
posted @ 2025-06-30 08:35 一线码农
阅读(384)
评论(0)
推荐(0)
2025年6月29日
DotTrace系列:7. 诊断 托管和非托管 内存暴涨
摘要: 一:背景 1. 讲故事 分析托管和非托管内存暴涨,很多人潜意识里都会想到抓dump上windbg分析,但我说可以用dottrace同样分析出来,是不是听起来有点让人惊讶,哈哈,其实很正常,它是另辟蹊径采用底层的ETW机制,即开启 windows 底层日志,所以 dottrace 可以做,官方血统的
阅读全文
posted @ 2025-06-29 12:00 一线码农
阅读(451)
评论(0)
推荐(1)
2025年6月28日
DotTrace系列:6. 程序异常诊断 和 Request慢处理
摘要: 一:背景 1. 讲故事 在我分析的众多dump中,有一些CPU爆高是因为高频的抛 Exception 导致,比如下面这张图,有 19 个线程都在抛 xxxResultException 异常。 从卦中虽知大量异常的痕迹,但从严谨的角度来说,最好再卜一卦,就是用 perfview 或者 dottrac
阅读全文
posted @ 2025-06-28 10:16 一线码农
阅读(282)
评论(0)
推荐(1)
2025年6月26日
DotTrace系列:5. 诊断程序的 慢File 和 慢SQL
摘要: 一:背景 1. 讲故事 上一篇跟大家聊到了 UI Freeze 的问题,让大家感受到了时间轴的强大和美观,这个是 perfview 所不具备的,本篇跟大家聊一下用 dottrace 诊断Windows子系统模块(File,SQL),虽然perfivew也能做这些,毕竟都是基于ETW机制,但前者占据了
阅读全文
posted @ 2025-06-26 11:05 一线码农
阅读(404)
评论(3)
推荐(1)
2025年6月25日
DotTrace系列:4. 诊断窗体程序变卡之原因分析
摘要: 一:背景 1. 讲故事 写这一篇是因为昨天看 dottrace 官方文档时,在评论区看到了一条不友好的评论,截图如下: 虽然语气上带有些许愤怒,但说实话人家也不是无中生有,作为 dottrace 的忠实粉丝我还是能够理解他的心情的,所以这篇我用最新的 2025.01 版 dottrace 来演示一下
阅读全文
posted @ 2025-06-25 12:20 一线码农
阅读(520)
评论(3)
推荐(5)
2025年6月23日
DotTrace系列:3. 时间度量之墙钟时间和线程时间
摘要: 一:背景 1. 讲故事 在用 dotTrace 对程序进行性能评测的时候,有一个非常重要的概念需要使用者明白,那就是 时间度量 (Time measurement),主要分为两种。 墙钟时间 线程时间 在 dotTrace 中有四种测量维度,其中 Real time 对应着 墙钟时间,截图如下: 二
阅读全文
posted @ 2025-06-23 10:17 一线码农
阅读(503)
评论(2)
推荐(2)
2025年6月22日
DotTrace系列:2. 理解四大经典的诊断类型(下)
摘要: 一:背景 1. 讲故事 前面我们已经聊过四大诊断类型中的前三个 Sampling,Tracine,Line-by-Line,这篇补上最后一个诊断类型 Timeline,这也是真实场景中使用最多的,它能够采集到所有它能采集到的,比如: 线程栈数据 (函数执行时间) ETW事件 (Windows日志)
阅读全文
posted @ 2025-06-22 14:20 一线码农
阅读(328)
评论(0)
推荐(3)
2025年6月20日
DotTrace系列:1. 理解四大经典的诊断类型(上)
摘要: 一:背景 1. 讲故事 在所有与 .NET相关的JetBrains产品中,我觉得 DotTrace 是最值得深入学习和研究的一款,个人觉得它的优点如下: 跨平台诊断 (Windows,Linux,MacOS) 兼容 dotnet-trace 产出的 nettrace。 优秀的可视化界面,尤其是 ti
阅读全文
posted @ 2025-06-20 13:57 一线码农
阅读(744)
评论(6)
推荐(6)
2025年6月19日
记一次 .NET 某无语的电商采集系统 CPU爆高分析
摘要: 一:背景 1. 讲故事 前段时间有位朋友微信上找到我,说他们docker中的采集程序出现了CPU爆高的情况,让我帮忙看下怎么回事,自己抓了个dump,感觉这位朋友动手能力还是比较强的,可能调试这块知识不熟悉,不知道如何分析,既然找到我,那就给他分析下吧。 二:CPU爆高分析 1. 为什么会爆高 在动
阅读全文
posted @ 2025-06-19 15:08 一线码农
阅读(848)
评论(2)
推荐(7)
2025年6月17日
记一次 .NET 某发证机系统 崩溃分析
摘要: 一:背景 1. 讲故事 前些天有位朋友在微信上找到我,说他的系统有偶发崩溃,自己也没找到原因,让我帮忙看下怎么回事,我分析dump一直都是免费的,毕竟对这些东西挺感兴趣,有问题可以直接call我,好了,接下来我们就来分析dump吧。 二:程序为什么会崩 1. 观察崩溃上下文 windbg有一个厉害之
阅读全文
posted @ 2025-06-17 14:22 一线码农
阅读(1503)
评论(5)
推荐(5)
上一页
1
2
3
4
5
6
···
46
下一页
公告