自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一线码农的专栏

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

  • 博客(652)
  • 收藏
  • 关注

原创 MinHook 对.NET底层的 SendMessage 拦截真实案例反思

再回头看文章开头的 cogxImagingDevice.dll 导致的程序卡死,如果用本篇的解决方案,是不是非常的轻量级,从此以后再也不需要抓内核的dump,也不需要在客户的电脑上用 spy++ 捣鼓来捣鼓去了。。。完美!

2025-06-10 11:10:57 547

原创 MinHook 如何对.NET底层的 Win32函数 进行拦截(上)

开箱和融合两种方式都有自己的用途,下一篇我们上一个很真实的场景,让大家体会下 win32 的注入对高级调试领域的强大功效。

2025-06-09 11:38:41 600

原创 聊一聊 .NET在Linux下的IO多路复用select和epoll

说了这么多,文尾总结下目前主流的 epoll 和 iocp 各自的特点。特性模型事件驱动 (Reactor)完成端口 (Proactor)核心思想通知可读写事件通知I/O操作完成适用场景高并发网络编程高并发I/O操作编程复杂度较低较高网络I/O性能极佳(百万级连接)优秀磁盘I/O支持有限完善CPU利用率高中内存开销低中。

2025-06-05 11:22:56 1156

原创 聊一聊 C# NativeAOT 多平台下的函数导出

这篇我们演示了 windows 上的C# 调用 C# AOT及 linux 上的C 调用 C# AOT,是不是挺有意思,也算是给训练营学员提供的一份资料参考。

2025-05-28 11:05:42 344

原创 聊一聊 .NET Dump 中的 Linux信号机制

简单的说Linux信号是一种进程间通信机制,大概可以做三件事情。通知进程发生了某种事件,比如:段错误。允许进程间发送简单的消息。控制进程行为,比如:终止、暂停、继续等。信号名称信号编号说明SIGQUIT3通常由 Ctrl+\ 触发SIGILL4非法指令SIGABRT6由 abort() 函数产生SIGFPE8浮点异常SIGSEGV11段错误(非法内存访问)SIGBUS7总线错误(内存访问对齐问题等)SIGSYS31错误的系统调用SIGTRAP5。

2025-05-27 11:39:37 633

原创 .NET外挂系列:8. harmony 的IL编织 Transpiler

这个系列总计8篇,已经全部写完啦!希望对同行们在解决.NET程序疑难杂症相关问题时提供一些资料和灵感,同时也是对.NET调试训练营的学员们功力提升添砖加瓦!

2025-05-24 14:02:09 852

原创 .NET外挂系列:7. harmony在高级调试中的一些实战案例

本篇列出的3个案例在.NET高级调试领域中还是非常经典的,如果用的合适,相信对你找出程序的疑难杂症事半功倍。

2025-05-23 13:52:10 1063

原创 .NET外挂系列:6. harmony中一些实用的反射工具包

这篇我们讲述的三个小工具包,更多的还是提高我们工作效率而准备的,用完之后也确实让人爱不释手。

2025-05-23 09:26:52 642

原创 .NET外挂系列:5. harmony 中补丁参数的有趣玩法(下)

这篇文章我们聊到的一些参数多多少少都带点黑客性质,建议大家不要乱用,这里声明一下,我所说的一切都是为.NET高级调试训练营服务的,也是给学员们提供的拓展资料。

2025-05-21 22:20:30 1018

原创 .NET外挂系列:4. harmony 中补丁参数的有趣玩法(上)

灵活运用这些奇奇怪怪的参数,相信你对 harmony 的使用有了一个全新的认识,大家可以开开心心的投放生产吧,去解决那些 Windows,Linux 上的 .NET程序的疑难杂症。

2025-05-21 10:02:34 1004

原创 .NET外挂系列:3. 了解 harmony 中灵活的纯手工注入方式

在特性搞不定的时候,手工HarmonyMethod编程是一个很好的补充,这几篇我们只关注了Prefix,毕竟从高级调试的角度看,我们更关注问题代码的调用栈,从而寻找引发故障的元凶。

2025-05-20 11:42:08 1073

原创 .NET外挂系列:2. 了解强大的 harmony 注解特性

通过不断的对方法进行注入优化,相信大家也感受到了harmony的异常强大,最后就是希望给训练营里的朋友一些思考和资料参考吧。

2025-05-19 10:20:06 425

原创 .NET外挂系列:1. harmony 基本原理和骨架分析

说了这么说,还是说一些比较实际的案例可能大家更感兴趣,我的一个 .NET 程序平时都是好好的,不知道为啥线程突然就暴涨到了1000+,现在很惶恐,不知道是什么逻辑导致的,我用 windbg 观察后发现是都是普通的Thread0:013>!tLock...人对一些未知的东西一般都很焦虑惶恐,那怎么反向找到是什么代码导致的呢?大家可以仔细想一想,既然有人开了Thread, 那必然要调用相应的 Start 方法,所以思路就很简单了,外挂方法就好,先用 ilspy 观察源码。

2025-05-18 15:38:09 964 1

原创 .NET程序启动就报错,如何截获初期化时的问题json

有了windbg之后,很多东西都会豁然开朗,而不再像以前那样人云亦云,高级调试这门救火技术应该是高级程序员必须的进阶之路。

2025-05-14 13:55:01 937

原创 如何反向绘制出 .NET程序 异步方法调用栈

手工绘制异步调用栈需要对异步的底层构建有一个清晰的认识,调试师是痛苦的,要想进阶为资深,需要日积月累的底层知识沉淀,在自我学习的过程中如果没有无数次的在绝望中寻找希望的能力,很容易从入门到放弃。。。

2025-05-11 18:31:25 574

原创 Linux系列:聊一聊 SystemV 下的进程间共享内存

其实在 Linux 中有很多中方式进行 IPC(进程间通信),我用大模型帮我做了一下汇总,截图如下:现如今Linux使用最多的还是POSIX标准,而System V相对来说比较老,为了研究我们写一个小例子观察下基本实现。哈哈,dump分析之旅就是这样,在分析中不断的学习新知识,再用新知识指导dump分析,就这样的不断的螺旋迭代,乐此不疲。

2025-05-10 11:03:20 331

原创 Linux系列:如何用perf跟踪.NET程序的mmap泄露

这类问题的泄露真的费了我不少心思,曾经让我纠结过,迷茫过,我也捣鼓过 strace,最终都无法找出栈上的托管函数,真的,目前 .NET 在 Linux 调试生态上还是很弱,好无奈,这篇文章我相信弥补了国内,甚至国外在这一块领域的空白,也算是这一年来对自己的一个交代。

2025-05-07 12:13:29 759

原创 记一次 .NET某工控任务调度系统 卡死分析

这次任务延迟事故在分析过程中还是有相当大的迷惑性,如果你缺乏对状态机的理解以及不知!dumpasync命令的使用,我相信这个问题你很难搞定。

2025-04-23 09:59:30 595

原创 记一次 .NET某旅行社酒店管理系统 卡死分析

这次卡死的生产事故,是大量数据库的慢请求导致SDK侧的数据库连接池(100)耗尽所致,如果有数据库侧的监控工具,我想一眼就能找到答案。

2025-04-21 12:38:45 717

原创 记一次 .NET某固高运动卡测试 卡慢分析

这次卡慢事故是由于赛门铁克导致,其实杀毒软件对我们程序来说真的是一个特别不稳定的因素,在我的分析旅程中,我见过杀毒软件导致的崩溃,卡死,卡慢,内存泄露 等等奇葩情况,无语了。。。

2025-04-14 11:34:20 808

原创 记一次 .NET某云HIS系统 CPU爆高分析

这次CPU爆高事故属于典型的蝴蝶效应,用 4 个线程间接的把64核的CPU直接干爆,这种问题有一定的隐蔽性,需要调试者对 后台GC 有一个总体的认识,否则还真不好解决,最后来一张 引发龙卷风 的小蝴蝶。。。

2025-04-11 12:03:04 1080

原创 Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露

Linux 上的调试总觉得少了一位总管太监,能分析非托管内存的工具不鸟dotnet, 同样的,能分析dotnet托管内存的工具也不鸟非托管内存,大家各自为政。。。让习惯使用通杀一切的windbg使用者太不可思议了。

2025-03-07 11:10:36 661

原创 Linux系列:如何调试 malloc 的底层源码

对 Win32 级别的 libc 进行源码调试,有助于我们对书籍中那些malloc的底层理论知识有一个很好的眼见为实,也是给Linux上的.NET高级调试打开了一扇窗!

2025-03-04 14:46:13 341

原创 Linux系列:如何用 C#调用 C方法造成内存泄露

部署在 Linux上的.NET程序同样存在非托管内存泄露的问题,这篇文章的例子虽然很简单,希望能给大家带来一些思考和观测途径吧。

2025-03-03 14:08:13 493

原创 记一次 .NET某数字化协同管理系统 内存暴涨分析

EnableWriteXorExecute特性是在.NET7之后默认将0设为1的,在某些开源linux上会因为各种兼容性问题导致各种奇葩的问题发生,这东西我感觉目前还是能禁掉就禁掉吧。

2025-01-20 13:52:27 1389

原创 聊一聊 操作系统蓝屏 c0000102 的故障分析

操作系统的代码固若金汤,我们常人基本上遇不到代码导致的bug,更多的是第三方配件导致的不给力,解决此类问题大多都是修复,更换。。。

2025-01-19 14:19:13 1137

原创 一个超经典 WinForm,WPF 卡死问题的终极反思

作为一名专业的.NET高级调试师,在这个经典卡死的问题溯源上一直没有提供非常好的解决方案,还是有些内疚的,在我的高级调试之旅中还是会不间断的收到类似dump,相信这篇文章之后,不再有人被它所困扰!

2025-01-13 12:11:46 1072

原创 聊一聊 C#异步 任务延续的三种底层玩法

虽然异步任务延续有三种实现方法,但底层都是一个套路,即借助字段玩出的各种花样,当然他们也是有一些区别的,即对任务是否用单独的线程调度,产生了不同的意见分歧。

2025-01-09 14:56:14 1015

原创 为什么 .NET8线程池 容易引发线程饥饿

可以肯定的是减少callback重入队列次数可以尽可能的避免线程饥饿,但怎么说呢?.NET8的线程池综合性能绝对比.NET6要强悍的多,但.NET8中的设计理念可能也不能达到100%的全域领跑,可能在某些1%的场景下还不如 .NET6 的简单粗暴。

2025-01-07 14:42:35 1024

原创 聊一聊 C#异步中的Overlapped是如何寻址的

C#的传统做法大多都是采用传参数的方式来建议映射关系,而本篇中用 malloc 开辟一块私有区域来映射两者的关系也真是独一份,实属无奈!

2025-01-06 11:40:43 1075

原创 记一次 .NET某汗液测试机系统 崩溃分析

分析完这个dump之后其实我挺感慨的,人生也如此dump一样,在真相和假象之间不断的交织穿梭,有些人走出来了,有些人永远留在了里面。。。

2024-12-31 11:16:25 640

原创 记一次 .NET某电商医药网站 CPU爆高分析

说实话像这种生产事故,我以前在公司的项目中也会偶发的遇到,都是赶时间,加班加点写出来的代码,只想把功能写出来早点下班,复杂度高?后面再说吧。。。代码写的太好,容易被老板优化。。。

2024-12-30 11:46:52 878

原创 记一次 .NET某工业视觉软件 崩溃分析

在我的dump分析之旅中曾遇到过一次相似的生产故障,本篇文章主要还是对训练营里这位朋友的有求必应吧,不过说实话,多分析几个像这样的dump,会极大的提升你的高级调试能力。

2024-12-27 11:56:15 610

原创 聊一聊 C#线程池 的线程动态注入 (下)

我们聊到了两种提升线程注入的方法,尤其是第二种让人意难平,面对上游洪水猛兽般的对线程池进行DDOS攻击,下游的线程不顾一切,倾家荡产的去承接,这是一种明知不可为而为之的悲壮之举。

2024-12-25 13:33:19 711

原创 聊一聊 C#线程池 的线程动态注入 (中)

采用主动通知的方式唤醒GateThread可以让每秒线程注入数由原来的1~2个提升到4个,虽然有所优化,但面对上游洪水猛兽般的请求,很显然也是杯水车薪,最终还是酿成了线程饥饿的悲剧,下一篇我们继续研究如何让线程注入的快一点,再快一点。。。

2024-12-24 13:32:17 696

原创 聊一聊 C#线程池 的线程动态注入 (上)

可能有些朋友很感慨,线程的动态注入咋怎么慢?1s才1-2个,难怪会出现线程饥饿。。。哈哈,下一篇我们聊一聊Task.Result下的注入优化。

2024-12-23 13:30:50 803

原创 聊一聊 C#前台线程 如何阻塞程序退出

现在我们知道了前后台线程本质上是 coreclr 弄出来的概念,并非系统线程素有之物。还是那句话,知识不重要,重要的是会使用合适的工具和保有的探索心,这也是在训练营里重度强调的。

2024-12-22 13:08:13 733

原创 聊一聊坑人的 C# MySql.Data SDK

挺意外的是 MySql.Data 项目在 github:https://github.com/mysql/mysql-connector-net 上没开 issue 栏。这就无法让社区开发者介入,真的很奇葩,只能在这里给大家做个预警吧。

2024-12-20 12:31:35 597

原创 记一次 .NET某差旅系统 CPU爆高分析

我的学员没有分析出来,我觉得应该是被 Task.Result 给误导了,真实的dump分析可能会真真假假,假假真真,就像这个社会一样,需要更多的实践历练吧。

2024-12-11 11:57:43 1400

原创 记一次 .NET某hdp智能柜系统 卡死分析

这次生产事故,对一般人来说还是有一定的难度,毕竟这种东西不是几个命令就能弄出来的,还是需要考察你对coreclr 一些底层知识的熟悉度。

2024-11-29 09:18:29 878

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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