我随机制作的工具在长时间使用后会冻结.我如何跟踪问题
本文关键字:何跟踪 冻结 问题 跟踪 机制 工具 长时间 | 更新日期: 2023-09-27 18:22:41
我在visualstudio中使用windows窗体制作了一个工具,可以从长文本文件中搜索不同的关键字(线性搜索)。它在点击过滤器按钮后随机冻结(表示没有响应)。如果我在重新启动后尝试执行完全相同的步骤,它会很好。
如何跟踪问题?断点不会有帮助,因为程序很大,我不知道我应该把它们放在哪里。
此外,如果你让它保持冷冻一段时间,它确实能成功工作,然后在同一点再次开始冷冻。
连接一个性能分析器(如果perfmon在几分钟内发生,它就会工作)并观察一些重要的值,例如:
- 垃圾收集时间
- 大型对象堆大小
- 总堆大小
- 逻辑线程计数
- 物理线程数
- 磁盘活动
如果这些都没有指向任何明显的问题(例如大型对象堆碎片或引用泄漏),那么您也可以暂停VisualStudio中的应用程序。例如,使用Visual Studio的run按钮运行应用程序,然后当您的应用程序显示not responding
时,您可以按下Visual Studio的Pause按钮并打开线程Window,了解是什么导致了问题,以及在UI线程被阻止太久以至于Window表示"没有响应"
当应用程序停止响应时,使用日志文件(或单独线程上的UI元素,具体取决于应用程序的类型)来指示您正在处理文件的位置。重复运行应用程序,并查找与应用程序停止位置相关的模式。
- 在处理了一定数量的文本后,应用程序是否会停止
- 应用程序是否在特定的字符组合上停止
- 当应用程序试图处理具有特定特征(如大小或复杂性)的元素时,它会停止吗
在收集了一些基本数据后,您可以开始向日志中添加似乎与您所看到的模式相关的信息。写下诸如消耗了多少内存等信息,试图缩小导致崩溃的特定模式。
日志文件是一种尝试获取有关应用程序状态、运行时状态以及崩溃发生时所采取的操作的信息的方法。