- 博客(549)
- 收藏
- 关注
原创 记一次 .NET 某拍摄监控软件 卡死分析
这次卡死事故还是挺有教育意义的,告诉我们第三方插件尽量应升尽升,同时也考察了对 临界区锁 和 socket 的基础知识。
2023-09-26 11:42:42
5
原创 记一次 .NET某新能源MES系统 非托管泄露
这次事故主要是朋友用 CSharpCodeProvider 动态生成程序集导致的程序集泄露,猜测代码是在哪里 copy 过来的,一定要搞清楚原理才能放心用,合理创建合理释放。
2023-09-25 10:45:57
23
原创 记一次 .NET 某仪器测量系统 CPU爆高分析
这两个 CPU 爆高事故还是非常经典的,根子上还是有不少初中级程序员具有偷懒 + 无视算法的思维,谨以这篇让后来的朋友少踩坑吧!
2023-09-22 13:01:27
151
原创 记一次 .NET 某餐饮小程序 内存暴涨分析
这次内存暴涨把生产服务器弄崩了,就是因为这么个低级错误导致实属不应该,本以为程序员不会写出什么死循环,还真的遇到了,提高开发人员的代码敏感性迫在眉睫。
2023-09-21 10:51:22
81
原创 记一次 .NET 某电力系统 内存暴涨分析
这起内存暴涨事故,表象上是 8216 的阻挡导致了内存无法被uncommitted所致,本质上还是归于托管堆的内存黑洞现象。
2023-09-18 10:38:17
329
1
原创 记一次 .NET某培训学校系统 内存碎片化分析
说实话文件句柄暴涨byte[]导致的内存暴涨pinned 导致的内存碎片化线程池暴涨 导致的程序无响应大家使用前需慎之又慎,三思而后行!!!
2023-08-03 10:28:44
132
原创 记一次 .NET 某物流API系统 CPU爆高分析
这次CPU爆高事故,主要还是因为批量提交记录多导致 SqlSugar 在做参数的正则替换上耗费了大量CPU时间所致,降低批量条数,通过小步快跑的方式尽可能的降低运行线程的积压,应该就能解决这个问题。
2023-07-31 15:44:49
1797
原创 如何用 PerfView 洞察 C# 中的慢速方法
相信这篇能够给一些在慢速方法查找上有困惑的朋友找到一些灵感,还是那句话,CLR团队首推的 PerfView 在运行期监控方面是王者般的存在,与 WinDbg 优势互补。
2023-07-21 13:04:06
102
原创 PerfView 洞察那些 C# 代码中的短命线程
相比WinDbg TTD的重模式,Perfiew真的很轻,而且无侵入性,这两个工具真的是珠联璧合,相得益彰。
2023-07-19 09:26:07
204
1
原创 用 perfcollect 洞察 Linux 上.NET程序CPU爆高
不知道大家发现没有,在 Windows 上很容易监控的东西,在 Linux 上就要麻烦的多,其实很容易理解,Windows 是微软的, .NET 也是微软的,自然是一等公民的存在。
2023-07-18 09:57:39
187
原创 用 PerfView 洞察.NET程序非托管句柄泄露
通过这个案例可以看到 PerfView 的最大好处就是无侵入性,WinDbg 和 Perfview 真的是一对好搭档,优势互补。
2023-07-17 10:53:26
477
原创 记一次 .NET 某游戏服务后端 内存暴涨分析
可以仔细想一想,没有被 GC 回收,从侧面也表明它可能刚分配不久,并且是一个局部变量,既然是局部变量,就可以反向找到是哪一个线程分配的,如果线程栈还残留着返回地址信息,就可以反推出是哪一个方法,有了这个思路,接下来就可以动手挖了。按照编码人的习惯,肯定是某一个集合,可以用内存搜索解决。0:000>!从卦中看,果然用的是一个集合,万事开头难,接下来继续反向搜索,如果线程栈还有残留的话,就可以找到它所属的线程栈。0:000>!从卦中的信息来看,它是属于0号线程,如果你不相信的话,可以拿417d1000。
2023-07-13 13:09:24
122
原创 如何洞察 .NET程序 非托管句柄泄露
handle 泄露也是一个比较难搞的问题,难点在于生产环境可能不让你用 WinDbg 这种侵入方式,但问题还得要解决,必须创造条件上,当前除了 WinDbg 还没有找到其他方式,有机会再研究下吧。
2023-07-07 13:10:43
280
原创 记一次 .NET 某医院预约平台 非托管泄露分析
在我分析的真实dump案例中,见过的泄露,也见过的泄露,还真没见过的泄露,算是完美的补充了我的案例库!
2023-07-05 12:29:02
2098
原创 记一次 .NET 某工控视觉系统 卡死分析
还是回到文章开头的那句话,这种 dump 问题,你能用 DnSpy,VS 调试出来吗?说实话很难,虽然以 .NET 程序为出口,但考察了你很多基础知识,诸如 RPC,COM,汇编,没有这些基础沉淀,这类dump很难摸清来龙去脉。
2023-07-04 12:57:35
746
原创 Linux 上的 .NET 如何自主生成 Dump
个人感觉自主生成 Dump 的方式在 Docker 场景下特别适用,通过一点硬编码来避免开启 多进程 的折中方式太棒了,相信这位朋友肯定有了好的思路。😄😄😄。
2023-06-30 11:08:34
126
原创 记一次 .NET 某埋线管理系统 崩溃分析
显卡的问题也能导致程序的崩溃,太不可思议了,试想一下你如果只是记日志,看代码,怎么可能找的出问题,哈哈哈,这就是高级调试的价值。
2023-06-29 12:50:47
102
原创 Docker 中的 .NET 异常了怎么抓 Dump
虽然Docker中的 .NET 程序占比较少,但把经验总结出来还是很值得的,以后有人问怎么抓,可以把这篇文章直接丢过去啦!
2023-06-26 12:07:39
622
原创 记一次 .NET 某旅行社审批系统 崩溃分析
这次崩溃事故主要还是第三方的SDK代码不健壮导致的死递归拖累程序崩溃,解决办法很简单,升级升级再升级,如果还有问题建议提交官方或者使用其他替代品,如果官方解决问题不活跃,你还敢用吗?
2023-06-19 11:51:32
730
原创 记一次 .NET 某药材管理系统 卡死分析
这次不稳定的事故从直观上就能猜到可能是 SQLSERVER 层面导致的问题,但需要证据,所以我们需要用 windbg 在这小小的花园里,挖呀挖呀挖!让朋友对外有数据层面的说服力。
2023-06-15 17:30:48
800
原创 浅聊一下 C#程序的 内存映射文件 玩法
Image 虽然是一个快捷的观察内存文件映射方式,那如果自己能实现一个就更有意思了,比如下面对1.txt进行文件映射,在 C# 中有一个快捷类//1kcapaticy,Console.WriteLine("请输入你要写入的内容: ");接下来用 windbg 附加一下,观察 1.txt 是不是被 MappedFile 上了,同时做的修改有没有更新到物理磁盘上。0:006>!
2023-06-13 18:13:07
1368
1
原创 如何洞察 C# 程序的 GDI 句柄泄露
说实话,找到程序的GDI句柄泄露的前因后果难度系数还是蛮高的,在没有系统科学的工具和基础知识之前,花费几天的时间排查这个问题是很正常的,相信这篇文章给后来人少踩坑吧。
2023-06-12 12:50:54
908
原创 Linux 上的 .NET 崩溃了怎么抓 Dump
这篇大概介绍了两个抓 dump 的方式:前者适合非托管程序,后者适合托管程序,相信这篇文章能极大的节省各方的沟通成本,花点时间整理下很值。
2023-05-29 13:11:46
845
原创 记一次 .NET 某汽贸店 CPU 爆高分析
熟悉同步块表的朋友都知道,持有+1,等待+2,而这个居然是一个偶数,也就表明那个 +1 的线程已经退出了临界区,同时等待线程此时还没有进来,正处在这么一个时间差内。这次 CPU 爆高事故,主要就是将 byte[] 转成 DataTable 的过程中出现的现象,治标治本的方案也说了,希望给后来人少踩一些坑吧。
2023-05-22 15:34:03
694
原创 记一次 Visual Studio 2022 卡死分析
综合朋友的反馈,这次VS的卡死就是他按下了Ctrl+C复制这段代码的时候,Resharper插件介入,然后在处理富文本时出问题了,不知道大家可踩过类似的坑,算是给后来人一点定位经验吧。
2023-05-18 17:26:23
2021
1
原创 记一次 .NET 某医院门诊软件 卡死分析
这个案例中去掉了意外的语句就搞定了,内部深层逻辑也没有再探究了,大概率就是意外的 _queueIn 为 0,让和方法没有匹配出现,造成了卡死现象。
2023-05-15 11:25:45
1141
原创 聊一聊 用 dotnet-trace 调查 lock锁竞争
dotnet-trace 是一个非常强大的跨平台性能分析工具,构建在EventPipe之上,特点就是跨平台,除了对锁竞争外,还有其他的各种有趣的事件,有兴趣的朋友可以查阅查阅。
2023-05-09 12:41:13
508
原创 记一次 .NET 某车零件MES系统 登录异常分析
总的来说这个问题对一个开发来说很简单,但如果沟通对象是一个非开发,没有源码,没有日志 还能准确定位问题,是一件挺有挑战的事情。在这里插入代码片。
2023-05-08 08:57:38
179
原创 聊一聊 Valgrind 监视非托管内存泄露和崩溃
总的来说,Valgrind 在洞察内存方面还是非常强大的,但也有它不能触及到的地方,熟悉它的优点和缺点,全面了解对我们调试师来说至关重要,希望本篇对你有帮助。
2023-05-05 15:52:44
753
原创 聊一聊 GDB 调试程序时的几个实用命令
GDB 有很多实用的命令这里就不逐一介绍了,至少在 Linux 上是霸主一样的存在,真搞不懂 netcore 的调试要和 lldb 扯在一块,简直是不走寻常路哈 😂😂😂。
2023-05-04 15:45:22
634
原创 玩一玩 Ubuntu 下的 VSCode 编程
习惯了 Intel 风格的汇编,再看AT&T风格的会极度不舒服,简直是逆天哈,感觉都是反方向的,相信熟悉一段时间之后就好了,本篇的一个简单搭建,希望对你有帮助。
2023-05-03 11:45:15
652
原创 记一次 Windows10 内存压缩模块 崩溃分析
分析内核态相比用户态难度要大的多,需要对操作系统以及CPU的相关知识有一个比较深度的理解,任重道远。。。
2023-04-26 14:23:42
713
原创 记一次 .NET 某外贸ERP 内存暴涨分析
总的来说,这次内存暴涨是因为程序出现了分配的快进快出现象导致的,如果你不想管也可以不用管,GC 在下次发兵时会一举歼灭,如果要做优化的话,需要优化下 sql,不要一次性查询出 10w+ 的数据,不过说实话,FreeSql 在映射方面最好也要做些优化,毕竟产生了1300w的临时对象,虽然不是它的错。
2023-04-23 11:19:04
649
原创 记一次 腾讯会议 的意外崩溃分析
崩溃的 dump 已经第一时间提交上去了,相信腾讯会议的研发团队能够很快解决,作为一个付费会员,真心希望在下次录制的时候不要再崩了。
2023-04-20 14:18:57
451
原创 记一次 .NET某医疗器械清洗系统 卡死分析
就是这么一句代码,来来回回兜了好几圈,花费了朋友个把星期,终于给解决了,也算是一个好结果吧,这个案例需要实时观察程序的内核态和用户态,看 dump 效果不大,造成了这么多时间的浪费。相信这个案例也让公司老板对他刮目相看。
2023-04-18 08:25:45
1293
1
原创 记一次 .NET 某手术室行为信息系统 内存泄露分析
这次事故应该是第三方组件在使用 html 的方式上造成的泄露,把包围圈缩小到这里相信朋友能很快的找到问题,验证问题。PS:在 dump 中寻找非托管内存泄露其实很多时候都比较绝望,需要你对Windows内存管理有一个比较深入的理解,还需要一个不骄不躁的分析心态。
2023-04-03 08:48:57
833
原创 记一次 .NET 某传感器采集系统 线程爆高分析
这次事故主要是由于在设备采集的过程中 IP 出了问题 导致的线程数暴涨引发的系统性崩溃,个人觉得朋友和hsl都有一定的责任,一个不检查错误码,一个强吞异常。
2023-03-30 11:57:42
431
原创 记一次 .NET 某企业 ERP网站系统 崩溃分析
这次事故是由于satrda层面找不到文件路径导致的程序崩溃,据朋友说在 C# 层面没收到这种C++异常,确实当 C# 和 C++ 产生交互时经常会有各种奇怪的问题,我无意删除你的,你无意干扰我的,大家都好自为之吧😂😂😂。
2023-03-27 16:03:20
745
原创 如何提取 x64 程序那些易失的方法参数
这是一篇非常有用的经验分享帖,相信你在dump分析中肯定会用的上,总的来说,由于方法参数是通过寄存器传递的,能不能成功捞取需要你仔细观察汇编代码才能知道。世间美好,相信的人都能得到。
2023-03-24 09:15:44
490
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人