自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一线码农的专栏

阴沉的黑夜都是白天的前奏

  • 博客(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

原创 AOT漫谈专题(第一篇): 如何调试C# AOT程序

工欲善其事必先利其器,对未知知识的探索必然需要一个好的工具,希望本篇给大家带来一些灵感吧。

2024-10-11 10:45:18 559

原创 记一次升级系统补丁导致 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关注的人

提示
确定要删除当前文章?
取消 删除