代码之家  ›  专栏  ›  技术社区  ›  Luiscencio

如何安排调试?

  •  1
  • Luiscencio  · 技术社区  · 15 年前

    在我的工作场所有一个签入-签出程序,它只从签入-签出计算机中获取数据并将其存储在我们的数据库中,但突然不知从何而来,开始在星期四报告错误,但在一天中只有一次是随机的,所以当我检测到错误时,我会运行该程序,但没有发生任何错误,所以我想每隔5-1次对其进行调试。0分钟来查看是否捕获错误以查看正在发生的情况,如何执行此操作?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Fredrik Mörk    15 年前

    日志记录是你的朋友。添加大量日志记录(使用内置跟踪日志记录或使用一些框架,如 log4net )。使用不同的日志级别来控制您退出的日志量。在详细级别,您可以记录输入和退出重要方法时的日志,记录输入参数和返回值。登录catch块等。然后在报告下一个错误后分析日志文件。

        2
  •  2
  •   Michael La Voie Frederik Gheysels    15 年前

    您当前在此应用程序中实现了哪种错误日志记录?如果没有,是否考虑添加全面的应用程序日志记录,例如 Log4Net 工具?或者如果这是一个Web应用程序, ELMAH 工具?

    通过这种方式,您可以记录每一个发生的错误及其详细信息,比如跟踪堆栈以跟踪问题。

        3
  •  0
  •   Jason Williams    15 年前

    一些想法:

    检查服务器事件日志,查看是否有任何可以拉出的崩溃小转储。这些可以告诉你很多关于程序崩溃时发生的事情(调用堆栈等)。

    或者编写一个包装程序,它可以运行您的程序并在程序失败时进行检测,然后获取服务器当前状态的快照,以便(希望)使用必要的数据重新执行任务,以在调试器中获得可重复的崩溃。

    或者只是添加大量的日志。您可以使用postsharp添加跟踪,跟踪告诉您输入和退出的每个方法,这样您就可以轻松地确定失败时运行的是哪个方法。

    你可以添加机器人代码。仔细检查是否有空值等,您可能会发现您已经纠正了问题,而不必知道是哪一个修复了它。

    如果程序不是太大,只是老式的和桌面检查(读取打印出来的内容),代码很可能会出现一些错误。

    另一种方法(更具实验性)可能是修改程序,使其连续运行,这样您就可以将其放入调试器中,直到遇到异常为止。(运行一个循环,等待一个触发器文件被刷新或其他东西,然后启动正常的进程-大约5行代码就足够了)