我正在使用带有.NET 1.1的Visual Studio 2003(Visual Basic) - 是的,它是一个遗留系统,无法升级。该程序中有一个工作流程,运行25分钟即可完成(基本上是使用活动报告打印检查)。现在突然对其中一个客户端,在20分钟或更长时间内抛出空引用异常后进程失败。 我把错误框如下 -
当我点击中断时,它表示在此位置找不到来源
现在问题是这个过程为100名员工运行,调用了10个函数,我不能真正为每个员工调整断点来调试(只需要几个小时),看看它在哪里抛出空错误。我也无法将所有对象包装在try catch或null check中(它只涉及过多的文件和函数)我需要知道它在哪里破碎!
我还监视任务管理器上的内存,看看aspnet是否占用了太多内存 - 但它似乎总是低于120MB。我也尝试了GC.Collect() - 但没有帮助。
如果有人可以指导我如何调试此问题,我将不胜感激?
谢谢
答案 0 :(得分:2)
添加一些旧学校Console.WriteLine("我正在处理员工nr:" + empNo)以确定您获得异常的位置。现在,您可以在该值上设置条件断点并启动调试会话。此外,有时,只需查看所涉及的数据库表就会发现问题(某些字段为空)
答案 1 :(得分:1)
尝试捕获应用程序域级别的异常并记录堆栈跟踪以查看它发生的位置。如果发生异常的位置的PDB可用,则只能显示源。
您可以找到更多信息here
编辑(更多信息): 它基本上允许您捕获一个方法中未处理的每个异常。尝试将异常消息及其堆栈跟踪写入日志文件。最好通过InnerExceptions递归循环来真正找到错误的来源。 找到它之后,您可以手动调试它,因为您知道在哪里设置断点。