“重播”重新创建错误所需的步骤

时间:2010-03-24 11:38:21

标签: debugging remote-debugging debuggervisualizer

我将创建一个典型的业务应用程序,将由几百名顾问使用。通常,会向顾问提供带有标准文本的错误消息。由于应用程序将是一个复杂的应用程序,对它进行了大量的更改,我希望以下内容:

当出现错误消息时,用户可以选择将错误消息“发送”给开发人员。开发人员应该能够在Eclipse中打开传入的文件,并逐步调试最后10分钟工作的步骤(如果他们想要,一次一行)。一切都应该是透明的,这意味着它们应该能够看到对数据库的调用的返回值。

现在有没有提供此类功能的解决方案,我的首选语言是Python或Java。我知道由于这种功能会有巨大的性能损失,但这是可以接受的,因为这种软件对性能不敏感。

如果数据库也有一个字典,那将是非常好的,以便人们可以在数据库中查询在应用程序中运行特定代码行的确切时间存在的值,从而导致错误。

1 个答案:

答案 0 :(得分:1)

你应该尝试使用日志记录,例如从数据库提交日志并记录用户与应用程序的交互,如果它是Web应用程序,则可以从Web服务器的日志文件开始。确保日志文件包含所有提交的数据,例如带参数的完整GET URL和带实体主体的POST。您可以配置Web服务器以在必要时生成此类日志。

然后构建一个测试客户端,该客户端可以解析日志文件并重新创建导致问题出现的所有用户交互。如果您怀疑竞争条件,您应该以高精度(ms分辨率)进行记录,并确保测试客户端可以反复运行相同的序列来强调这些关键部分。

重播(如标题所示)是重现错误的最佳方式,只需收集重新创建生成特定状态/情境的输入所需的所有数据。当涉及到追踪错误或在法医模式下不应该工作的错误时,请不要关注内部结构和返回值,例如:试图通过分析残骸来分析崩溃的原因,你应该反复崩溃飞机并添加越来越多的日志记录/或者使用调试器,直到你知道出错为止。