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

💡 原文中文,约6700字,阅读约需16分钟。
📝

内容提要

一位朋友的程序偶尔会卡顿10秒,分析发现是赛门铁克防火墙拦截文件指针设置,导致线程等待事件唤醒。这提醒我们,杀毒软件可能导致程序不稳定。

🎯

关键要点

  • 朋友的程序偶尔会卡顿10秒,原因不明。
  • 使用PerfView工具分析程序运行状态,发现卡顿发生在kernelbase!WaitForSingleObject上。
  • 通过分析dump文件,发现程序在等待名为\BaseNamedObjects\MultiProcess的AutoResetEvent事件。
  • 主线程在sysfer.dll中被赛门铁克防火墙拦截,导致线程无法及时唤醒。
  • 总结认为杀毒软件可能导致程序不稳定,影响程序的正常运行。

延伸问答

朋友的程序卡顿的原因是什么?

程序卡顿是由于赛门铁克防火墙拦截了文件指针设置,导致线程等待事件唤醒。

如何分析程序的卡顿问题?

可以使用PerfView工具分析程序运行状态,开启墙钟模式采集线程栈数据。

PerfView工具在分析中有什么作用?

PerfView工具可以定期采集线程栈数据,帮助识别程序卡顿的具体位置。

赛门铁克防火墙如何影响程序运行?

赛门铁克防火墙可能导致程序不稳定,影响线程的及时唤醒,从而引发卡顿。

在分析dump文件时应该注意什么?

需要结合调用栈和事件状态,寻找程序卡顿的突破口。

卡顿现象的最终结论是什么?

卡顿现象是由于赛门铁克的拦截导致的,杀毒软件可能是程序不稳定的重要因素。

➡️

继续阅读