高级调试
文章平均质量分 66
biyusr
qq:280905365
展开
-
一个学 .NET 高级调试 的技术社群
圈子目前已汇聚了微软,腾讯,携程,同程,北森 等各位大佬,还有美国和加拿大的华裔朋友。人数:250+主题:235运营天数:457天不是所有的付出都是不求回报的,收费也是为了让星主可以更好的服务于大家,所以我设了一个高性价比的年费价格:198前100名,再送一张39元优惠券。原创 2022-09-14 09:26:39 · 186 阅读 · 0 评论 -
如何使用windbg查看C#某个线程的栈大小 ?
每一个线程都有一个叫的线程环境块数据结构,这个结构中有一个叫做NT_TIB的结构,它里面有两个字段分别为StackBase和StackLimit,前面叫做,也就是栈顶,后者叫做,因为栈空间是向小地址增长的,所以用就能算出所谓的栈内存大小,接下来我们用 windbg 演示一下。原创 2022-09-14 09:13:34 · 217 阅读 · 0 评论 -
PerfView专题 (第一篇): 如何寻找热点函数
采样的原理就是周期性的去看下当前的 CPU 核中运行的几个线程正在执行什么方法, 当采样到了几万个或者几十万个样本之后,就可以对这些采集到的方法进行分组排序来找到 topN,那些 TopN 的方法自然就是导致 CPU 爆高可能的诱因。很多场景下的 CPU 高,是因为某个或者某几个线程在高频的执行某个方法,有可能是死循环,有可能是陷入了CPU密集型方法内,解决这个问题一个好的思路就是对 CPU 进行采样,比如我的 12 核电脑。采集了,不出意外的话,15s 之后你就会看到如下的截图。...原创 2022-08-12 14:33:16 · 480 阅读 · 0 评论 -
如何使用windbg查看C#某个线程的栈大小 ?
每一个线程都有一个叫的线程环境块数据结构,这个结构中有一个叫做NT_TIB的结构,它里面有两个字段分别为StackBase和StackLimit,前面叫做,也就是栈顶,后者叫做,因为栈空间是向小地址增长的,所以用就能算出所谓的栈内存大小,接下来我们用windbg演示一下。......原创 2022-08-02 11:10:09 · 364 阅读 · 0 评论 -
记一次 .NET 某智能交通后台服务 CPU爆高分析
这次事故的主要原因编码人员缺少了一定的编程经验,在写业务逻辑的时候缺少了对空字典的流程处理,导致了的尴尬,也有可能是将那个放错了位置🤣🤣🤣httpshttps。原创 2022-07-22 09:13:30 · 332 阅读 · 0 评论 -
记一次 .NET 某消防物联网 后台服务 内存泄漏分析
本次事故主要是因为在STA线程上用到了COM组件,导致让MTA模型的Finalizer线程去释放时被卡死,而这个Thread又没有用启动消息循环,STA也是Sleep状态,我个人感觉两者无法通讯,给到朋友的建议是去掉Thread的STA。其实这里有一个很好的点就是,当内存暴涨,不一定是生产端的问题,也有可能是消费端。httpshttpshttpshttps。...原创 2022-07-21 08:27:11 · 396 阅读 · 0 评论 -
MSBuild 命令的简单使用
独立观察员 2022 年 7 月 7 日在 VS 安装目录下,如:D:Microsoft Visual Studio2022EnterpriseMSBuildCurrentBinMSBuild 命令行参考 - MSBuild | Microsoft Docs(https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild-command-line-reference?view=vs-2022)项目中有如下生成事件,其中使用了 $(SolutionD原创 2022-07-10 15:08:06 · 1081 阅读 · 0 评论 -
客户的一个紧急bug,我用了两种方式进行 C# 反编译修改源码
周五下午运营反馈了一个紧急bug,说客户那边一个信息列表打不开,急需解决,附带的日志文件也发过来了,看了下日志大概是这样的:从异常信息可以看到,大概就是 DataTable.Select 的时候抛出了异常,通过调用堆栈追查了下代码大概是这样的。大坑就在这里,绝大多数时候过滤 DataTable 可以采用这样的写法 : ,但是客户在新加坡,全英文操作系统,而且时间格式也不知道设置成啥样了,我估计时间格式包含了类似的 #,正好又遇到了前后缀 ,拆分上就出错了,导致了经典的 异常被抛出。这个 bu原创 2022-07-05 00:51:17 · 1176 阅读 · 0 评论