我在visual studio中使用Windows窗体创建了一个工具,用于从长文本文件中搜索不同的关键字(线性搜索)。它在点击过滤器按钮后会随机冻结(说没有响应)。如果我在重新启动后尝试执行完全相同的步骤,它将正常工作。
我如何追踪问题?由于程序很大,断点也无济于事,我不知道我应该把它放在哪里。
此外,如果你让它保持冷冻一段时间,它会成功运作,然后在同一点再次开始冻结。
答案 0 :(得分:2)
连接性能分析器(如果在几分钟内发生,则会运行)并观察一些重要的值,例如:
如果这些都没有指出任何明显的问题(例如大对象堆碎片或泄漏引用),那么您也可以在Visual Studio中暂停应用程序。例如,使用Visual Studio的“运行”按钮运行应用程序,然后当应用程序显示not responding
时,可以按下Visual Studio的“暂停”按钮并打开线程窗口,了解导致问题的原因以及运行的内容当UI线程被阻止这么长时间以来,Window说它“没有响应”
答案 1 :(得分:2)
当应用停止响应时,使用日志文件(或单独线程上的UI元素,具体取决于应用程序的类型)来指示您在处理文件时的位置。重复运行应用程序并查找与应用程序停止位置相关的模式。
收集完一些基本数据后,您可以开始向日志中添加与您所看到的模式相关的信息。写出诸如正在消耗多少内存等信息,以尝试缩小导致崩溃的特定模式。
日志文件是一种尝试获取有关应用程序状态,运行时状态以及崩溃发生时所采取的操作的信息的方法。