在我的工作场所有一个签入程序,它只从签入机器获取数据并将其存储在我们的数据库中,但突然在周四突然开始报告错误,但只在一天中的随机时间报告一次错误,所以当我检测到错误时,我运行程序但没有任何反应,所以我想每5-10分钟调试一次,看看是否捕获到错误,看看发生了什么,我该怎么做?
发布于 2009-10-15 19:15:39
日志记录是您的朋友。添加大量日志记录(可以使用内置的跟踪日志记录,也可以使用log4net等框架)。使用不同的日志级别来控制您输出的日志数量。在详细级别,您可以在进入和退出重要方法时进行日志记录,记录输入参数和返回值。在catch块中登录,等等。然后在报告下一个错误后分析日志文件。
发布于 2009-10-15 19:17:02
您目前在此应用程序中实现了哪种类型的错误记录?如果没有,您是否会考虑添加全面的应用程序日志记录,例如Log4Net工具?或者如果这是一个ELMAH工具的web应用程序?
通过这种方式,您可以记录发生的每个错误及其详细信息,如堆栈跟踪以跟踪问题。
发布于 2009-10-16 03:29:18
一些想法:
检查服务器事件日志,查看是否有可以拉出的崩溃小型转储。这些可以告诉你程序崩溃时发生了什么(调用堆栈等)。
或者编写一个包装器程序,它可以运行您的程序并检测它何时失败,然后拍摄服务器在那个时刻的状态快照,这样您就可以(希望)使用必要的数据重新执行任务,从而在调试器中获得可重复的崩溃。
或者只是添加日志记录的负载。您可以使用PostSharp添加跟踪,它会告诉您进入和退出的每个方法,这样您就可以轻松地确定哪个方法在失败时正在运行。
您还可以添加robustification代码。严格检查空值等,你可能会发现你已经纠正了这个问题,而不一定知道是哪个修复程序修复了它。
如果程序不是太大,仅仅是老式的和桌面检查(读取打印输出),代码很可能会出现一些big。
另一种方法(更具实验性)可能是将程序修改为连续运行,这样您就可以将其放在调试器中,直到遇到异常。(运行一个循环,等待触发器文件或其他东西被刷新,然后启动正常过程-大约5行代码可能就足够了)
https://stackoverflow.com/questions/1574419
复制相似问题