如何调试无法复制的bug?

时间:2012-07-16 18:28:21

标签: c# asp.net debugging

现在我的一个asp.net应用程序的使用已经显着增加,出现了两个奇怪的问题,这些问题非常罕见,我无法重现。

我对如何调试和解决这些问题感到茫然。

以下是两个例子:

我的一个aspx页面在!IsPostBack上将会话状态值重置为0(true)。但是,我的某个特定位置的用户经常在该页面不是回发时进入该页面,并且会话状态值不会在他的笔记本电脑上重置。 (我根据应用程序随后的行为而不是在调试模式下运行这个声明)但是当我坐在他旁边的笔记本电脑上使用相同的浏览器在我的笔记本电脑上运行应用程序时,代码正常工作并且会话状态被重置在同一个互联网连接上同时。当这个用户在他的笔记本电脑上运行应用程序时,他有更好的互联网连接,他没有经常出现问题。

我的应用程序中的一个aspx页面在运行将数据保存到DB的代码后执行了server.transfer。在server.transfer之后的几乎所有时间,文本框都包含它们的默认值(因为它们应该是!isPostback==True),但文本框中包含前一个值的时间大约是1%。我知道已经有一个往返服务器,因为数据已经保存。执行相同操作的相同用户使用相同的浏览器在同一台PC上会出现此问题。因此,99%的时间它正常工作,1%的时间它们做同样的事情并且无法正常工作。

如果它们似乎是随机出现的,我怎么才开始试图找出造成这些问题的原因?

我怀疑互联网连接的质量是问题,因为它是一个变化的变量,但这些信息对我有何帮助?

通过在调试模式下运行我的应用程序,我不能调试这些问题。

我正在使用Asp .Net 3.5C# 3.5,该应用程序在IE 6-8中运行。 (兼容模式下的IE 8

3 个答案:

答案 0 :(得分:8)

我会将日志记录添加到发生问题的代码中。然后通知遇到问题的用户尝试记录他们遇到问题的时间。获得日志和大致时间后,您可以进入并倒出这些日志,看看是否有任何指向正确的方向。我还会查看服务器上的IIS和事件日志。

答案 1 :(得分:2)

您可以安装Firefox Throttle插件来模拟慢速连接。很多事情都可能发生在ASP.NET中,页面加载速度很慢。如果页面未完全加载但项目是可点击的,那么ASP.NET可能会因事件验证而感到非常不安......等等。

另外,我建议您开始记录并跟踪应用程序中的问题区域。然后,您可以将其与IIS请求日志相关联,并获得相当准确的最新信息。

答案 2 :(得分:0)

好像你遇到了Session State的问题。默认情况下,ASP.NET使用InProc会话状态模式,该模式使用服务器内存来存储值。在许多情况下,这可能会丢失或重置(应用程序池回收)。切换到SQLServer Session State可能会帮助您解决问题。