IT博客汇
首页
精华
技术
设计
资讯
扯淡
权利声明
登录
注册
相关标签
作者:
一线码农
400
source
关注
TA的标签:
...
endpoint
service
之旅
服务
码农
服务端
server
集合
一个
wcf
精通
message
十五天
css
love
0
一线码农
发表于
2025-06-26 03:06:00
DotTrace系列:5. 诊断程序的 慢File 和 慢SQL - 一线码农
【摘要】一:背景 1. 讲故事 上一篇跟大家聊到了 UI Freeze 的问题,让大家感受到了时间轴的强大和美观,这个是 perfview 所不具备的,本篇跟大家聊一下用 dottrace 诊断Windows子系统模块(File,SQL),虽然perfivew也能做这些,毕竟都是基于ETW机制,但前者占据了阅读全文 ...
继续阅读 (6)
love
0
一线码农
发表于
2025-06-25 04:20:00
DotTrace系列:4. 诊断窗体程序变卡之原因分析 - 一线码农
【摘要】一:背景 1. 讲故事 写这一篇是因为昨天看 dottrace 官方文档时,在评论区看到了一条不友好的评论,截图如下: 虽然语气上带有些许愤怒,但说实话人家也不是无中生有,作为 dottrace 的忠实粉丝我还是能够理解他的心情的,所以这篇我用最新的 2025.01 版 dottrace 来演示一下阅读全文 ...
继续阅读 (6)
love
0
一线码农
发表于
2025-06-23 02:18:00
DotTrace系列:3. 时间度量之墙钟时间和线程时间 - 一线码农
【摘要】一:背景 1. 讲故事 在用 dotTrace 对程序进行性能评测的时候,有一个非常重要的概念需要使用者明白,那就是 时间度量 (Time measurement),主要分为两种。 墙钟时间 线程时间 在 dotTrace 中有四种测量维度,其中 Real time 对应着 墙钟时间,截图如下: 二阅读全文 ...
继续阅读 (9)
love
0
一线码农
发表于
2025-06-22 06:21:00
DotTrace系列:2. 理解四大经典的诊断类型(下) - 一线码农
【摘要】一:背景 1. 讲故事 前面我们已经聊过四大诊断类型中的前三个 Sampling,Tracine,Line-by-Line,这篇补上最后一个诊断类型 Timeline,这也是真实场景中使用最多的,它能够采集到所有它能采集到的,比如: 线程栈数据 (函数执行时间) ETW事件 (Windows日志)阅读全文 ...
继续阅读 (8)
love
0
一线码农
发表于
2025-06-20 05:57:00
DotTrace系列:1. 理解四大经典的诊断类型(上) - 一线码农
【摘要】一:背景 1. 讲故事 在所有与 .NET相关的JetBrains产品中,我觉得 DotTrace 是最值得深入学习和研究的一款,个人觉得它的优点如下: 跨平台诊断 (Windows,Linux,MacOS) 兼容 dotnet-trace 产出的 nettrace。 优秀的可视化界面,尤其是 ti阅读全文 ...
继续阅读 (10)
love
0
一线码农
发表于
2025-06-19 07:09:00
记一次 .NET 某无语的电商采集系统 CPU爆高分析 - 一线码农
【摘要】一:背景 1. 讲故事 前段时间有位朋友微信上找到我,说他们docker中的采集程序出现了CPU爆高的情况,让我帮忙看下怎么回事,自己抓了个dump,感觉这位朋友动手能力还是比较强的,可能调试这块知识不熟悉,不知道如何分析,既然找到我,那就给他分析下吧。 二:CPU爆高分析 1. 为什么会爆高 在动阅读全文 ...
继续阅读 (8)
love
0
一线码农
发表于
2025-06-17 06:23:00
记一次 .NET 某发证机系统 崩溃分析 - 一线码农
【摘要】一:背景 1. 讲故事 前些天有位朋友在微信上找到我,说他的系统有偶发崩溃,自己也没找到原因,让我帮忙看下怎么回事,我分析dump一直都是免费的,毕竟对这些东西挺感兴趣,有问题可以直接call我,好了,接下来我们就来分析dump吧。 二:程序为什么会崩 1. 观察崩溃上下文 windbg有一个厉害之阅读全文 ...
继续阅读 (14)
love
0
一线码农
发表于
2025-06-16 05:32:00
记一次 .NET 某SaaS版CRM系统 崩溃分析 - 一线码农
【摘要】一:背景 1. 讲故事 调试训练营里的一位学员前些天找到我,说他们跑在k8s中的程序崩掉了不知道怎么回事?日志也没有记录到,让我帮他看看,dump也抓到了,既然抓到了那就看看吧。 二:程序为什么会崩溃 1. 崩溃原因 linux 上的崩溃分析没有windows上那么方便,但还是可以分析的,先通过 !阅读全文 ...
继续阅读 (15)
love
0
一线码农
发表于
2025-06-12 03:09:00
聊一聊 Linux 上对函数进行 hook 的两种方式 - 一线码农
【摘要】一:背景 1. 讲故事 前两篇我们介绍了 Minhook 在 Windows 平台上的强大功效,这一篇我们来聊一聊如何在 Linux 上对函数进行hook,这里介绍两种方式。 轻量级的 LD_PRELOAD 拦截 LD_PRELOAD是一种共享库拦截,这种方式的优点在于不需要对源程序做任何修改,达到阅读全文 ...
继续阅读 (19)
love
0
一线码农
发表于
2025-06-10 03:10:00
MinHook 对.NET底层的 SendMessage 拦截真实案例反思 - 一线码农
【摘要】一:背景 1. 讲故事 上一篇我们说到了 minhook 的一个简单使用,这一篇给大家分享一个 minhook 在 dump 分析中的实战,先看下面的线程栈。 0:044> ~~[138c]s win32u!NtUserMessageCall+0x14: 00007ffc`5c891184 c3 r阅读全文 ...
继续阅读 (20)
love
0
一线码农
发表于
2025-06-09 03:37:00
MinHook 如何对.NET底层的 Win32函数 进行拦截(上) - 一线码农
【摘要】一:背景 1. 讲故事 在前面的系列中,我们聊过.NET外挂 harmony,他可以对.NET SDK方法进行拦截,这在.NET高级调试领域中非常重要,但这里也有一些遗憾,就是不能对SDK领域之外的函数进行拦截,比如 Win32 函数。。。 这篇我们就来解决这个问题,对,它就是 MinHook,当然阅读全文 ...
继续阅读 (27)
love
0
一线码农
发表于
2025-06-05 03:21:00
聊一聊 .NET在Linux下的IO多路复用select和epoll - 一线码农
【摘要】一:背景 1. 讲故事 在windows平台上,相信很多人都知道.NET异步机制是借助了Windows自带的 IO完成端口 实现的异步交互,那在 Linux 下.NET 又是怎么玩的呢?主要还是传统的 select,poll,epoll 的IO多路复用,在 coreclr源代码中我们都能找到它们的影阅读全文 ...
继续阅读 (28)
love
0
一线码农
发表于
2025-05-28 03:05:00
聊一聊 C# NativeAOT 多平台下的函数导出 - 一线码农
【摘要】一:背景 1. 讲故事 昨晚训练营里有一位朋友提到一个问题,说 C# AOT程序能否编译为一个dll,供其他语言调用,其实这个是完全没有问题的,也确实我的的文章体系中没有涉及到这块,那今天就补充完整吧。 二:NativeAOT 函数导出 1. 简单的案例 在 C 中我相信很多人都知道用 dllexp阅读全文 ...
继续阅读 (39)
love
0
一线码农
发表于
2025-05-27 03:38:00
聊一聊 .NET Dump 中的 Linux信号机制 - 一线码农
【摘要】一:背景 1. 讲故事 当 .NET程序 在Linux上崩溃时,我们可以配置一些参考拿到对应程序的core文件,拿到core文件后用windbg打开,往往会看到这样的一句信息 Signal SIGABRT code SI_USER (Sent by kill, sigsend, raise),参考如阅读全文 ...
继续阅读 (27)
love
0
一线码农
发表于
2025-05-24 06:01:00
.NET外挂系列:8. harmony 的IL编织 Transpiler - 一线码农
【摘要】一:背景 1. 讲故事 前面文章所介绍的一些注入技术都是以方法为原子单位,但在一些罕见的场合中,这种方法粒度又太大了,能不能以语句为单位,那这个就是我们这篇介绍的 Transpiler,它可以修改方法的 IL 代码,甚至重构,所以这就非常考验你的 IL 功底,个人建议在写的时候要多借助如下三个工具:阅读全文 ...
继续阅读 (55)
love
0
一线码农
发表于
2025-05-23 08:32:00
.NET外挂系列:7. harmony在高级调试中的一些实战案例 - 一线码农
【摘要】一:背景 1. 讲故事 如果你读完前六篇,我相信你对 harmony 的简单使用应该是没什么问题了,现在你处于手拿锤子看谁都是钉子的情况,那这篇我就找高级调试里非常经典的 3个钉子 让大家捶一锤。 二:三大故障案例 1. ConcurrentBag 大集合问题 在高级调试中经常会遇到一类问题就是托管阅读全文 ...
继续阅读 (28)
love
0
一线码农
发表于
2025-05-23 01:26:00
.NET外挂系列:6. harmony中一些实用的反射工具包 - 一线码农
【摘要】一:背景 1. 讲故事 本来想研究一下 IL编织和反向补丁的相关harmony知识,看了下其实这些东西对 .NET高级调试 没什么帮助,所以本篇就来说一些比较实用的反射工具包吧。 二:反射工具包 1. AccessTools AccessTools这个工具包用来简化反射操作,你如果看过 harmon阅读全文 ...
继续阅读 (171)
love
0
一线码农
发表于
2025-05-21 14:19:00
.NET外挂系列:5. harmony 中补丁参数的有趣玩法(下) - 一线码农
【摘要】一:背景 1. 讲故事 开局一张表,故事全靠编,为了能够承上启下,先把参数列表放出来。 参数名 说明 __instance 访问非静态方法的实例(类似 this)。 __result 获取/修改返回值,要想修改用 ref。 __resultRef 修改返回引用(方法返回是 ref 返回 )。 __s阅读全文 ...
继续阅读 (35)
love
0
一线码农
发表于
2025-05-21 02:02:00
.NET外挂系列:4. harmony 中补丁参数的有趣玩法(上) - 一线码农
【摘要】一:背景 1. 讲故事 前面几篇我们说完了 harmony 的几个注入点,这篇我们聚焦注入点可接收的几类参数的解读,非常有意思,在.NET高级调试 视角下也是非常重要的,到底是哪些参数,用一张表格整理如下: 参数名 说明 __instance 访问非静态方法的实例(类似 this)。 __resul阅读全文 ...
继续阅读 (37)
love
0
一线码农
发表于
2025-05-20 03:42:00
.NET外挂系列:3. 了解 harmony 中灵活的纯手工注入方式 - 一线码农
【摘要】一:背景 1. 讲故事 上一篇我们讲到了 注解特性,harmony 在内部提供了 20个 HarmonyPatch 重载方法尽可能的让大家满足业务开发,那时候我也说了,特性虽然简单粗暴,但只能解决 95% 的问题,言外之意还有一些事情做不到,所以剩下的 5% 只能靠 完全手工 的方式了。 二:注解特阅读全文 ...
继续阅读 (26)
love
0
一线码农
发表于
2025-05-19 02:19:00
.NET外挂系列:2. 了解强大的 harmony 注解特性 - 一线码农
【摘要】一:背景 1. 讲故事 上一篇我们简单的聊了下harmony外挂的基本玩法,让大家宏观上感受到了外挂在 .NET高级调试 领域的威力,这一篇我们从 注解特性 这个角度继续展开。 二:harmony 注解特性 1. HarmonyPatch 解读 在harmony支持的众多特性中,HarmonyPat阅读全文 ...
继续阅读 (29)
love
0
一线码农
发表于
2025-05-18 07:42:00
.NET外挂系列:1. harmony 基本原理和骨架分析 - 一线码农
【摘要】一:背景 1. 讲故事 为什么要开这么一个系列,是因为他可以对 .NET SDK 中的方法进行外挂,这种技术对解决程序的一些疑难杂症特别有用,在.NET高级调试 领域下大显神威,在我的训练营里也是花了一些篇幅来说这个,今天我准备用10篇左右来详细聊一聊,供学员和同行们欣赏,详细的文档参考:https阅读全文 ...
继续阅读 (32)
love
0
一线码农
发表于
2025-05-14 05:54:00
.NET程序启动就报错,如何截获初期化时的问题json - 一线码农
【摘要】一:背景 1. 讲故事 前几天训练营里的一位朋友在复习课件的时候,程序一跑就报错,截图如下: 从给出的错误信息看大概是因为json格式无效导致的,在早期的训练营里曾经也有一例这样的报错,最后定位下来是公司的电脑安全软件导致的,一旦有非托管调试器,安全软件就会加密 runtimeconfig.json阅读全文 ...
继续阅读 (41)
love
0
一线码农
发表于
2025-05-11 10:31:00
如何反向绘制出 .NET程序 异步方法调用栈 - 一线码农
【摘要】一:背景 1. 讲故事 这个问题源于给训练营里的一位朋友分析的卡死dump,在分析期间我需要知道某一个异步方法的调用栈,但程序是 .framework 4.8 ,没有sos后续版本独有的 !dumpasync 命令,所以这就比较搞了,但转念一想,既然 !dumpasync 能把调用栈搞出来,按理说我阅读全文 ...
继续阅读 (44)
love
0
一线码农
发表于
2025-05-10 03:02:00
Linux系列:聊一聊 SystemV 下的进程间共享内存 - 一线码农
【摘要】一:背景 1. 讲故事 昨天在分析一个 linux 的 dump 时,看到了这么一话警告,参考如下: 0:000> !eeheap -gc *** WARNING: Unable to verify timestamp for SYSV10cf21d1 (deleted) 对,就是上面的 SYSV1阅读全文 ...
继续阅读 (71)
love
0
一线码农
发表于
2025-05-07 04:13:00
Linux系列:如何用perf跟踪.NET程序的mmap泄露 - 一线码农
【摘要】一:背景 1. 讲故事 如何跟踪.NET程序的mmap泄露,这个问题困扰了我差不多一年的时间,即使在官方的github库中也找不到切实可行的方案,更多海外大佬只是推荐valgrind这款工具,但这款工具底层原理是利用模拟器,它的地址都是虚拟出来的,你无法对valgrind 监控的程序抓dump,并且阅读全文 ...
继续阅读 (30)
love
0
一线码农
发表于
2025-04-23 01:58:00
记一次 .NET某工控任务调度系统 卡死分析 - 一线码农
【摘要】一:背景 1. 讲故事 前段时间有位朋友加我微信,来了就要进我的训练营,并且附带着纠结了他几个月的一个疑难杂症,让我帮忙看下怎么回事,问题描述截图如下: 由于这个定时任务是 furion 写的,刚好这位学员是VIP客户,找了小僧大佬,大佬需要最小化的问题代码,由于不能本地复现,也就没下文了,毕竟也是阅读全文 ...
继续阅读 (36)
love
0
一线码农
发表于
2025-04-21 04:40:00
记一次 .NET某旅行社酒店管理系统 卡死分析 - 一线码农
【摘要】一:背景 1. 讲故事 年初有位朋友找到我,说他们的管理系统不响应了,让我帮忙看下到底咋回事? 手上也有dump,那就来分析吧。 二:为什么没有响应 1. 线程池队列有积压吗? 朋友的系统是一个web系统,那web系统的无响应我们首先要关注的就是 线程池,使用 !sos tpq 命令,参考输出如下:阅读全文 ...
继续阅读 (34)
love
0
一线码农
发表于
2025-04-14 03:34:00
记一次 .NET某固高运动卡测试 卡慢分析 - 一线码农
【摘要】一:背景 1. 讲故事 年前有位朋友找到我,说他们的程序会偶发性卡慢 10s 钟,在某些组合下会正常,某些组合下就会出现问题,解释不了其中的原因,让我帮忙看下怎么回事?截图如下: private void TestRun() { int encposUpy = 0; Logger Log = new阅读全文 ...
继续阅读 (32)
love
0
一线码农
发表于
2025-04-11 04:02:00
记一次 .NET某云HIS系统 CPU爆高分析 - 一线码农
【摘要】一:背景 1. 讲故事 年前有位朋友找到我,说他们的系统会偶发性的CPU爆高,有时候是爆高几十秒,有时候高达一分多钟,自己有一点分析基础,但还是没找到原因,让我帮忙看下怎么回事? 二:CPU爆高分析 1. CPU 真的爆高吗 还是那句话,一定要相信数据,不要被别人带偏,使用 !tp 和 !cpuid阅读全文 ...
继续阅读 (31)
1/9
下一页