- 博客(627)
- 收藏
- 关注
原创 聊一聊 操作系统蓝屏 c0000102 的故障分析
操作系统的代码固若金汤,我们常人基本上遇不到代码导致的bug,更多的是第三方配件导致的不给力,解决此类问题大多都是修复,更换。。。
2025-01-19 14:19:13 575
原创 一个超经典 WinForm,WPF 卡死问题的终极反思
作为一名专业的.NET高级调试师,在这个经典卡死的问题溯源上一直没有提供非常好的解决方案,还是有些内疚的,在我的高级调试之旅中还是会不间断的收到类似dump,相信这篇文章之后,不再有人被它所困扰!
2025-01-13 12:11:46 882
原创 聊一聊 C#异步 任务延续的三种底层玩法
虽然异步任务延续有三种实现方法,但底层都是一个套路,即借助字段玩出的各种花样,当然他们也是有一些区别的,即对任务是否用单独的线程调度,产生了不同的意见分歧。
2025-01-09 14:56:14 961
原创 为什么 .NET8线程池 容易引发线程饥饿
可以肯定的是减少callback重入队列次数可以尽可能的避免线程饥饿,但怎么说呢?.NET8的线程池综合性能绝对比.NET6要强悍的多,但.NET8中的设计理念可能也不能达到100%的全域领跑,可能在某些1%的场景下还不如 .NET6 的简单粗暴。
2025-01-07 14:42:35 965
原创 聊一聊 C#异步中的Overlapped是如何寻址的
C#的传统做法大多都是采用传参数的方式来建议映射关系,而本篇中用 malloc 开辟一块私有区域来映射两者的关系也真是独一份,实属无奈!
2025-01-06 11:40:43 1010
原创 记一次 .NET某汗液测试机系统 崩溃分析
分析完这个dump之后其实我挺感慨的,人生也如此dump一样,在真相和假象之间不断的交织穿梭,有些人走出来了,有些人永远留在了里面。。。
2024-12-31 11:16:25 592
原创 记一次 .NET某电商医药网站 CPU爆高分析
说实话像这种生产事故,我以前在公司的项目中也会偶发的遇到,都是赶时间,加班加点写出来的代码,只想把功能写出来早点下班,复杂度高?后面再说吧。。。代码写的太好,容易被老板优化。。。
2024-12-30 11:46:52 829
原创 记一次 .NET某工业视觉软件 崩溃分析
在我的dump分析之旅中曾遇到过一次相似的生产故障,本篇文章主要还是对训练营里这位朋友的有求必应吧,不过说实话,多分析几个像这样的dump,会极大的提升你的高级调试能力。
2024-12-27 11:56:15 547
原创 聊一聊 C#线程池 的线程动态注入 (下)
我们聊到了两种提升线程注入的方法,尤其是第二种让人意难平,面对上游洪水猛兽般的对线程池进行DDOS攻击,下游的线程不顾一切,倾家荡产的去承接,这是一种明知不可为而为之的悲壮之举。
2024-12-25 13:33:19 684
原创 聊一聊 C#线程池 的线程动态注入 (中)
采用主动通知的方式唤醒GateThread可以让每秒线程注入数由原来的1~2个提升到4个,虽然有所优化,但面对上游洪水猛兽般的请求,很显然也是杯水车薪,最终还是酿成了线程饥饿的悲剧,下一篇我们继续研究如何让线程注入的快一点,再快一点。。。
2024-12-24 13:32:17 663
原创 聊一聊 C#线程池 的线程动态注入 (上)
可能有些朋友很感慨,线程的动态注入咋怎么慢?1s才1-2个,难怪会出现线程饥饿。。。哈哈,下一篇我们聊一聊Task.Result下的注入优化。
2024-12-23 13:30:50 771
原创 聊一聊 C#前台线程 如何阻塞程序退出
现在我们知道了前后台线程本质上是 coreclr 弄出来的概念,并非系统线程素有之物。还是那句话,知识不重要,重要的是会使用合适的工具和保有的探索心,这也是在训练营里重度强调的。
2024-12-22 13:08:13 704
原创 聊一聊坑人的 C# MySql.Data SDK
挺意外的是 MySql.Data 项目在 github:https://github.com/mysql/mysql-connector-net 上没开 issue 栏。这就无法让社区开发者介入,真的很奇葩,只能在这里给大家做个预警吧。
2024-12-20 12:31:35 541
原创 记一次 .NET某差旅系统 CPU爆高分析
我的学员没有分析出来,我觉得应该是被 Task.Result 给误导了,真实的dump分析可能会真真假假,假假真真,就像这个社会一样,需要更多的实践历练吧。
2024-12-11 11:57:43 1352
原创 记一次 .NET某hdp智能柜系统 卡死分析
这次生产事故,对一般人来说还是有一定的难度,毕竟这种东西不是几个命令就能弄出来的,还是需要考察你对coreclr 一些底层知识的熟悉度。
2024-11-29 09:18:29 839
原创 AOT漫谈专题(第七篇): 聊一聊给C#打造的节点依赖图
基于上下文的依赖推测。未构造类型的推测。还不知道的一些未知…期待后续的 .NET9, .NET10 有更大的提升吧。
2024-10-24 10:42:38 719
原创 AOT漫谈专题(第六篇): C# AOT 的泛型,序列化,反射问题
在将程序发布成AOT的过程中,总会遇到这样或者那样的坑,这篇算是提供点理论基础给后来者吧,同时 Runtime Directives 这种无侵入的实例化方式,很值得关注哈。
2024-10-23 12:59:11 1168
原创 AOT漫谈专题(第五篇): 如何劫持.NET AOT编译器 进行源码级调试
相信大家现在都知道Visual Studio 托管调试器调试 C# 代码它是当仁不让,缺点在于对非托管部分的查看缺少了手段。WinDbg 非托管调试器调试 C/C++ 是一把利器,但用它调试托管的C#代码,虽然可以用,但在变量显示各方面不是很直观。以劫持的方式对 AOT Compiler 自身进行源码级调试,这本身就是一个很有意思的话题,不断的介入Compiler编译的的各个阶段,相信能给大家深度学习AOT提供了一些不寻常的手段。
2024-10-16 16:45:52 832
原创 AOT漫谈专题(第四篇): C#程序如何编译成Native代码
研究这些东西还是比较麻烦的,主要是官方github上对ilc的介绍也比较有限,更多的还是需要研究源码,术业有专攻,作为一个调试师,更多精力还是耗在市场上的dump中吧。
2024-10-15 11:59:10 759
原创 AOT漫谈专题(第三篇): 如何获取C#程序的CPU利用率
总的来说如果你的AOT使用默认的 WindowsThreadPool,那想获取 cpu利用率基本上是无力回天,当然有达人知道的话可以告知下,如果切到默认的.NET线程池还是有的一拼,即使没有 pdb 符号也可以根据_minThreads和_maxThreads的内容反向搜索。
2024-10-14 10:34:32 836
原创 AOT漫谈专题(第二篇): 如何对C# AOT轻量级APM监控
虽然 .NET AOT 越来越成熟,但目前还是不能对 gcheap 进行sos级的分析,暂时只能手工的挖掘整理,不过我相信在 .NET10 或者 11 上应该能够得到完整的支持,毕竟这势不可挡!
2024-10-12 12:52:25 671
原创 记一次升级系统补丁导致 VS2022 崩溃分析
这次Visual Studio 2022 的启动崩溃罪魁祸首居然是 Windows 的补丁包导致的,这也太不靠谱了吧,不过这个案例也告诉我们有时候掌握一点dump分析能力,还是很容易找到问题的突破口。
2024-10-08 11:37:52 1251
原创 聊一聊 C#中有趣的 SourceGenerator生成器
在研究底层方面,windbg可谓是一把趁手的兵器,这个例子也算是活生生的论证了一把,否则真的不知道从 Roslyn 何处来论证官方给出的流程图,对吧。
2024-09-30 17:17:20 1411
原创 记一次 .NET某上位机视觉程序 卡死分析
这次生产事故还是挺有意思的,为什么 WinForm 中可以存在渲染线程,最后还祸在其身,给我几百例dump分析之旅中添加了一笔色彩!
2024-09-14 10:15:35 876
原创 记一次 .NET某实验室自动进样系统 崩溃分析
这次生产事故彻底破坏了两个语言团队之间的相互合作的信任度,信任重建可就难了,不怕神一样的对手,就怕猪猪一样的队友,放在这里还是挺合适的,哈哈,开个小玩笑。
2024-08-27 12:42:38 385
原创 聊一聊 C# 中让人惶恐的 Bitmap
Bitmap使用不当危害巨大,所以一定要谨记尽早释放的原则,如果真的不幸被吃了很多内存,也一定要明白那些未知的大内存段是不是被 Bitmap 所关联,从而尽早的找到真正的祸根。
2024-08-25 16:18:27 1462
原创 GC终结标记 SuspendEE 是怎么回事
挖掘这个标记的前世今生回头看其实还是挺有意思的,coreclr 居然新增了 m_EETlsData 字段来给 sos 做妥协,哈哈,这彰显了 sos 一等公民的地位。
2024-08-21 11:20:05 363
原创 寻访中国100家.NET中大企业 —— 第二站:苏州行
我曾长期在互联网公司上班,没有人会喊工程师为xxx工,在我dump分析之旅中被人喊为xxx工,起初还挺不适应的,但也扛不住多呀,我就继续沿用这样的称谓吧,安工镜头感非常好,侃侃而谈,分享的经验让我受益匪浅,给人一个邻家大哥哥的感觉。正值暑假,出行的同时带着孩子一起去各地见见世面,扩大下孩子的眼界,苏州之行历时4天,逼迫着自己做了三场采访,广结良缘,乐在其中,哈哈,回头想想挺有意思,豁出去便是重生。而言,所以去的第一件事就是拍照,证明我真的来过,哈哈哈 🤣🤣🤣。到了会议室后,必须先来一场采访,人都有一颗。
2024-08-20 11:08:42 323
原创 记一次 .NET某环境监测系统 崩溃分析
这次生产事故挖了点新东西,有点好奇的是现在工控行业也开始用 Avalonia 替代 WPF 了吗?不过现阶段稳定性和 WPF 是没法比的,期待未来更健壮的版本吧。
2024-08-09 09:32:24 447
原创 记一次 .NET某智慧出行系统 CPU爆高分析
这次生产事故分析还是非常有意思的,一个看似阻塞的问题也会引发CPU爆高,超出了一些人的认知吧,对,其实它就是经典的现象,大家有任何dump问题可以找我,一如既往的免费分析。
2024-08-08 10:32:13 993
原创 如何用 WinDbg 调试Linux上的 .NET程序
最新版本 的WinDbg真的让人很兴奋,可以将自己伪装成 GDB 来和远程的 GDBServer 打通来实现对 Linux 上 .NET程序进行调试,这样就可以继续使用熟悉的WinDbg 命令,在这个版本中我觉得 WinDbg 不再是 WinDbg,而是 XDbg 了,画个简图如下:简图有了,接下来就要付出实践了。本想在 CentOS7 上安装 .NET8,不大好装,这里就用一个现存的 .NETCore 3.1 吧,测试代码如下:代码非常简单,就是1s输出一条记录,接下来编译成x64部署到 Centos
2024-07-22 10:23:58 391
原创 记一次 .NET某上位视觉程序 离奇崩溃分析
在大工控领域里,这是我见过第三例bit位翻转导致的程序崩溃,太无语了,恶魔到底是不是旁边的伺服电机?
2024-07-12 10:23:58 719
原创 记一次 .NET某酒业业务系统 崩溃分析
说实话这个dump分析起来还是挺有难度的,需要你对Windows线程池clr源码实现有一个基础了解,否则很难构造出完整证据链。
2024-07-09 11:42:07 762 1
原创 记一次 .NET某网络边缘计算系统 卡死分析
这个卡死事故还是蛮好解决的,如果有一些经验直接用也是能搞定的,重点在于这是一个 Linux的dump,同时又是 .NET上的一个很好玩的场景,故此分享出来。
2024-07-01 13:10:49 981
原创 聊一聊 C# 弱引用 底层是怎么玩的
WeakReference 的内部玩法有很多,更深入的理解还需要对进行深度挖掘,后面有机会再聊吧,有时候dump分析还是挺苦逼的,需要对相关领域底层知识有一个足够了解,否则谈何修复呢?
2024-06-28 11:44:08 993
原创 聊一聊 Monitor.Wait 和 Pluse 的底层玩法
花了半天研究这东西还是挺有意思的,重点还是要理解下那张图,理解了之后我相信你对方法注释中所指的会有一个新的体会。
2024-06-20 11:55:13 399
原创 记一次 .NET某机械臂上位系统 卡死分析
这次朋友的生产事故,对我们做分析的人来说还是有很大的教训意义,有时候主线程的一些抛错或者阻塞假象会诱导我们陷入分析误区,这就需要调试人员具有一双慧眼识别,及时的浪子回头。
2024-06-18 10:34:50 738
原创 记一次 .NET某工厂报警监控设置 崩溃分析
这次程序崩溃的原因很简单,就是空引用异常,但诡异就诡异在明明有 trycatch 在外部,硬是没接住,这个大概率是 CLR 的 bug,让我这个分析多年dump的老手都叹为观止,开了眼界,无语了无语了。。。
2024-06-13 16:19:46 1003
原创 记一次 .NET某游戏币自助机后端 内存暴涨分析
前些天有位朋友找到我,说他们的程序内存会偶发性暴涨,自己分析了下是非托管内存问题,让我帮忙看下怎么回事?哈哈,看到这个dump我还是非常有兴趣的,居然还有这种游戏币自助机类型的程序,下次去大玩家看看他们出币的机器后端是不是C#写的?由于dump是linux上的程序,刚好windbg可以全平台分析,太爽了,直接用windbg开干吧。在 windows 平台上相信有很多朋友都知道用 命令看,但这是专属于windows平台的命令,在分析linux上的dump不好使,参考如下输出:卦中的内存段分类用处不大,也没
2024-06-12 08:54:28 522
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人