<cite id="7hldp"></cite>
<var id="7hldp"><strike id="7hldp"></strike></var><var id="7hldp"><strike id="7hldp"><progress id="7hldp"></progress></strike></var>
<var id="7hldp"></var><var id="7hldp"><strike id="7hldp"><listing id="7hldp"></listing></strike></var>
<var id="7hldp"></var>
<var id="7hldp"></var>
<var id="7hldp"></var>
<var id="7hldp"><strike id="7hldp"><listing id="7hldp"></listing></strike></var>
<var id="7hldp"></var>
<del id="7hldp"><span id="7hldp"></span></del>
<var id="7hldp"></var>
<var id="7hldp"></var><var id="7hldp"><video id="7hldp"></video></var> <var id="7hldp"></var><var id="7hldp"><strike id="7hldp"><listing id="7hldp"></listing></strike></var>
<cite id="7hldp"></cite>
<var id="7hldp"><strike id="7hldp"></strike></var><var id="7hldp"><strike id="7hldp"></strike></var>
摘要: 一:背景 1. 讲故事 其实这个问题是前段时间有位朋友咨询我的,由于问题说的比较泛,不便作答,但想想梳理一下还是能回答一些的,这篇就来聊一聊下面这几个锁。 Interlocked AutoResetEvent / ManualResetEvent Semaphore 用户态层面我就不想说了,网上一搜 阅读全文
posted @ 2022-09-21 13:06 一线码农 阅读(2096) 评论(7) 推荐(18) 编辑
摘要: 一:背景 1. 讲故事 前段时间有位朋友在分析他的非托管泄漏时,发现NT堆的_HEAP_ENTRY 的 Size 和 !heap 命令中的 Size 对不上,来咨询是怎么回事? 比如下面这段输出: 0:000> !heap 0000000000550000 -a Index Address Name 阅读全文
posted @ 2022-09-19 14:38 一线码农 阅读(1375) 评论(0) 推荐(8) 编辑
摘要: 一:背景 1. 讲故事 前段时间有位朋友在微信上找到我,说他的程序出现了内存泄漏,能不能帮他看一下,这个问题还是比较经典的,加上好久没上非托管方面的东西了,这篇就和大家分享一下,话不多说,上 WinDbg 说话。 二:WinDbg 分析 1. 到底是哪里的泄漏 好的开始就是成功的一半,否则就南辕北辙 阅读全文
posted @ 2022-09-14 08:34 一线码农 阅读(1748) 评论(2) 推荐(12) 编辑
摘要: 一:背景 1. 讲故事 前段时间有位朋友微信上找到我,说它的程序出现了卡死,让我帮忙看下是怎么回事? 说来也奇怪,那段时间求助卡死类的dump特别多,被迫训练了一下对这类问题的洞察力 😄😄😄,再次声明一下,我分析 dump 是免费的,没有某软高额的分析费用,你要问我图什么,图技术的精进。 回到 阅读全文
posted @ 2022-09-06 08:37 一线码农 阅读(1007) 评论(1) 推荐(7) 编辑
摘要: 一:背景 前段时间在训练营上课的时候就有朋友提到一个问题,为什么 Windbg 附加到 C# 程序后,程序就处于中断状态了?它到底是如何实现的? 其实简而言之就是线程的远程注入,这一篇就展开说一下。 二:实现原理 1. 基本思路 WinDbg 在附加进程的时候,会注入一个线程到 C# 进程 中,注入 阅读全文
posted @ 2022-09-05 08:18 一线码农 阅读(2926) 评论(9) 推荐(37) 编辑
摘要: 一:背景 一直在用 WinDbg 调试用户态程序,并没有用它调试过 内核态,毕竟不是做驱动开发,也没有在分析 dump 中需要接触用内核态的需求,但未知的事情总觉得很酷,加上最近在看 《深入解析 Windows 操作系统》 一书,书中有不少案例需要深入到 内核态 ,所以这篇准备整理一下如何用 Win 阅读全文
posted @ 2022-09-03 11:56 一线码农 阅读(565) 评论(1) 推荐(12) 编辑
摘要: 一:背景 在 CLR 源码中有很多的 extern 和 extern "C" 这样的关键词,比如下面这些代码: extern size_t gc_global_mechanisms[MAX_GLOBAL_GC_MECHANISMS_COUNT]; extern DWORD g_dwHandles; 阅读全文
posted @ 2022-09-02 10:46 一线码农 阅读(464) 评论(0) 推荐(3) 编辑
摘要: 一:背景 相信大家在分析 dump 时,经常会看到 WKS 和 SRV 这样的字眼,如下代码所示: 00007ffa`778a07b8 coreclr!WKS::gc_heap::segment_standby_list = 0x00000000`00000000 00007ffa`778a3870 阅读全文
posted @ 2022-09-01 12:01 一线码农 阅读(323) 评论(0) 推荐(4) 编辑
摘要: 一:背景 1. 讲故事 前段时间遇到了一个难度比较高的 dump,经过几个小时的探索,终于给找出来了,在这里做一下整理,希望对大家有所帮助,对自己也是一个总结,好了,老规矩,上 WinDBG 说话。 二:WinDbg 分析 1. 为什么会卡死 既然程序卡死,那肯定是被冻住了,所以看下主线程此时在做什 阅读全文
posted @ 2022-08-29 17:28 一线码农 阅读(967) 评论(3) 推荐(7) 编辑
摘要: 一:背景 本篇是我们系列文章的最后一篇,前面的文章中大多是在 CLR Runtime 以及 OS 层面进行监控来发现各种可疑的程序问题,除了这两个层面,其实我们还可以对 SDK 中一些类进行洞察,比如说: ArrayPool Http Socket Task 更多资料可以看下:https://doc 阅读全文
posted @ 2022-08-28 18:01 一线码农 阅读(515) 评论(0) 推荐(4) 编辑
摘要: 一:背景 去年 GC架构师 Maoni 在 (2021 .NET 开发者大会) [https://ke.segmentfault.com/course/1650000041122988/section/1500000041123017] 上演示过 PerfView 的 Diff 功能来寻找内存增量, 阅读全文
posted @ 2022-08-25 17:50 一线码农 阅读(1627) 评论(0) 推荐(6) 编辑
摘要: 一:背景 C# 程序内存泄漏的诱发因素有很多,但从顶层原理上来说,就是该销毁的 用户根 对象没有被销毁,从而导致内存中意料之外的对象无限堆积,导致内存暴涨,最终崩溃,这其中的一个用户根就是 终结器队列,这一篇我们就来看下如何让 PerfView 配合 WinDbg 双剑合璧。 二:如何洞察 1. 终 阅读全文
posted @ 2022-08-24 10:05 一线码农 阅读(424) 评论(2) 推荐(1) 编辑
摘要: 一:背景 在 内存泄漏 的系列问题中,有一类问题是 内存碎片化 导致的,而且这种更容易发生在 LOH 上,因为它默认不开启 对象压缩,一般遇到这种情况,优先让朋友执行下面的代码应急。 GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHe 阅读全文
posted @ 2022-08-23 16:35 一线码农 阅读(374) 评论(0) 推荐(2) 编辑
摘要: 一:背景 这篇我们来聊一下 PerfView 在协助 WinDbg 分析 Dump 过程中的两个超实用技巧,可能会帮助我们快速定位最后的问题,主要有如下两块: 洞察内存泄漏中的静态大集合变量名。 验证当前程序的 GC 模式。 这里就把经验分享一下,希望让大家少走弯路。 二:如何洞察 1. 查看静态变 阅读全文
posted @ 2022-08-22 09:10 一线码农 阅读(432) 评论(2) 推荐(4) 编辑
摘要: 一:背景 上一篇我们聊到了如何用 PerfView 洞察 GC 的变化,但总感觉还缺了点什么? 对,就是要跟踪到底是什么代码触发了 GC,这对我们分析由于 GC 导致的 CPU 爆高有非常大的参考价值,在以前我都是用 WinDBG 来实现,但这玩意需要做一些侵入性操作,实战起来不是那么丝滑,虽然有可 阅读全文
posted @ 2022-08-21 10:32 一线码农 阅读(281) 评论(0) 推荐(2) 编辑
全一级赤裸裸毛片