上一页 1 2 3 4 5 6 7 ··· 46 下一页
摘要: 一:背景 1. 讲故事 分析托管和非托管内存暴涨,很多人潜意识里都会想到抓dump上windbg分析,但我说可以用dottrace同样分析出来,是不是听起来有点让人惊讶,哈哈,其实很正常,它是另辟蹊径采用底层的ETW机制,即开启 windows 底层日志,所以 dottrace 可以做,官方血统的 阅读全文
posted @ 2025-06-29 12:00 一线码农 阅读(501) 评论(0) 推荐(1)
摘要: 一:背景 1. 讲故事 在我分析的众多dump中,有一些CPU爆高是因为高频的抛 Exception 导致,比如下面这张图,有 19 个线程都在抛 xxxResultException 异常。 从卦中虽知大量异常的痕迹,但从严谨的角度来说,最好再卜一卦,就是用 perfview 或者 dottrac 阅读全文
posted @ 2025-06-28 10:16 一线码农 阅读(298) 评论(0) 推荐(1)
摘要: 一:背景 1. 讲故事 上一篇跟大家聊到了 UI Freeze 的问题,让大家感受到了时间轴的强大和美观,这个是 perfview 所不具备的,本篇跟大家聊一下用 dottrace 诊断Windows子系统模块(File,SQL),虽然perfivew也能做这些,毕竟都是基于ETW机制,但前者占据了 阅读全文
posted @ 2025-06-26 11:05 一线码农 阅读(429) 评论(3) 推荐(1)
摘要: 一:背景 1. 讲故事 写这一篇是因为昨天看 dottrace 官方文档时,在评论区看到了一条不友好的评论,截图如下: 虽然语气上带有些许愤怒,但说实话人家也不是无中生有,作为 dottrace 的忠实粉丝我还是能够理解他的心情的,所以这篇我用最新的 2025.01 版 dottrace 来演示一下 阅读全文
posted @ 2025-06-25 12:20 一线码农 阅读(543) 评论(3) 推荐(5)
摘要: 一:背景 1. 讲故事 在用 dotTrace 对程序进行性能评测的时候,有一个非常重要的概念需要使用者明白,那就是 时间度量 (Time measurement),主要分为两种。 墙钟时间 线程时间 在 dotTrace 中有四种测量维度,其中 Real time 对应着 墙钟时间,截图如下: 二 阅读全文
posted @ 2025-06-23 10:17 一线码农 阅读(541) 评论(2) 推荐(2)
摘要: 一:背景 1. 讲故事 前面我们已经聊过四大诊断类型中的前三个 Sampling,Tracine,Line-by-Line,这篇补上最后一个诊断类型 Timeline,这也是真实场景中使用最多的,它能够采集到所有它能采集到的,比如: 线程栈数据 (函数执行时间) ETW事件 (Windows日志) 阅读全文
posted @ 2025-06-22 14:20 一线码农 阅读(349) 评论(0) 推荐(3)
摘要: 一:背景 1. 讲故事 在所有与 .NET相关的JetBrains产品中,我觉得 DotTrace 是最值得深入学习和研究的一款,个人觉得它的优点如下: 跨平台诊断 (Windows,Linux,MacOS) 兼容 dotnet-trace 产出的 nettrace。 优秀的可视化界面,尤其是 ti 阅读全文
posted @ 2025-06-20 13:57 一线码农 阅读(791) 评论(6) 推荐(6)
摘要: 一:背景 1. 讲故事 前段时间有位朋友微信上找到我,说他们docker中的采集程序出现了CPU爆高的情况,让我帮忙看下怎么回事,自己抓了个dump,感觉这位朋友动手能力还是比较强的,可能调试这块知识不熟悉,不知道如何分析,既然找到我,那就给他分析下吧。 二:CPU爆高分析 1. 为什么会爆高 在动 阅读全文
posted @ 2025-06-19 15:08 一线码农 阅读(867) 评论(2) 推荐(7)
摘要: 一:背景 1. 讲故事 前些天有位朋友在微信上找到我,说他的系统有偶发崩溃,自己也没找到原因,让我帮忙看下怎么回事,我分析dump一直都是免费的,毕竟对这些东西挺感兴趣,有问题可以直接call我,好了,接下来我们就来分析dump吧。 二:程序为什么会崩 1. 观察崩溃上下文 windbg有一个厉害之 阅读全文
posted @ 2025-06-17 14:22 一线码农 阅读(1526) 评论(5) 推荐(5)
摘要: 一:背景 1. 讲故事 调试训练营里的一位学员前些天找到我,说他们跑在k8s中的程序崩掉了不知道怎么回事?日志也没有记录到,让我帮他看看,dump也抓到了,既然抓到了那就看看吧。 二:程序为什么会崩溃 1. 崩溃原因 linux 上的崩溃分析没有windows上那么方便,但还是可以分析的,先通过 ! 阅读全文
posted @ 2025-06-16 13:32 一线码农 阅读(1058) 评论(1) 推荐(7)
摘要: 一:背景 1. 讲故事 前两篇我们介绍了 Minhook 在 Windows 平台上的强大功效,这一篇我们来聊一聊如何在 Linux 上对函数进行hook,这里介绍两种方式。 轻量级的 LD_PRELOAD 拦截 LD_PRELOAD是一种共享库拦截,这种方式的优点在于不需要对源程序做任何修改,达到 阅读全文
posted @ 2025-06-12 11:09 一线码农 阅读(1004) 评论(3) 推荐(2)
摘要: 一:背景 1. 讲故事 上一篇我们说到了 minhook 的一个简单使用,这一篇给大家分享一个 minhook 在 dump 分析中的实战,先看下面的线程栈。 0:044> ~~[138c]s win32u!NtUserMessageCall+0x14: 00007ffc`5c891184 c3 r 阅读全文
posted @ 2025-06-10 11:10 一线码农 阅读(590) 评论(2) 推荐(3)
摘要: 一:背景 1. 讲故事 在前面的系列中,我们聊过.NET外挂 harmony,他可以对.NET SDK方法进行拦截,这在.NET高级调试领域中非常重要,但这里也有一些遗憾,就是不能对SDK领域之外的函数进行拦截,比如 Win32 函数。。。 这篇我们就来解决这个问题,对,它就是 MinHook,当然 阅读全文
posted @ 2025-06-09 11:37 一线码农 阅读(758) 评论(0) 推荐(9)
摘要: 一:背景 1. 讲故事 在windows平台上,相信很多人都知道.NET异步机制是借助了Windows自带的 IO完成端口 实现的异步交互,那在 Linux 下.NET 又是怎么玩的呢?主要还是传统的 select,poll,epoll 的IO多路复用,在 coreclr源代码中我们都能找到它们的影 阅读全文
posted @ 2025-06-05 11:21 一线码农 阅读(413) 评论(0) 推荐(6)
摘要: 一:背景 1. 讲故事 昨晚训练营里有一位朋友提到一个问题,说 C# AOT程序能否编译为一个dll,供其他语言调用,其实这个是完全没有问题的,也确实我的的文章体系中没有涉及到这块,那今天就补充完整吧。 二:NativeAOT 函数导出 1. 简单的案例 在 C 中我相信很多人都知道用 dllexp 阅读全文
posted @ 2025-05-28 11:05 一线码农 阅读(1664) 评论(3) 推荐(16)
上一页 1 2 3 4 5 6 7 ··· 46 下一页