如果每个bug都能在编译时就捕获到,那该多好。遗憾的是,往往只有当软件部署到一个生产系统之后,bug才会暴露出来。生产系统(production system)是指发布或安装软件的系统。软件发布到生产系统后,才能由最终用户(end user)访问和使用。一般地,生产系统可以用于观察问题,但是无法用来修正问题。这是因为,查找和修正bug通常要求开发人员通过实验来测试他们对问题的猜测是否正确;而生产系统往往忙于为用户提供服务,因此一般无法运行这些实验。出于这个原因,观察到bug的系统往往不会用来进行调试。
所以要用另外一个系统来进行调试,这有很多好处:
q 调试不会影响生产系统的性能。
q 调试系统提供了更多的工具,可以帮助查找问题。
q 可以更快地完成实验,因为无需与生产系统及其用户协调。
q 更容易控制可能影响到实验结果的变量。
不过,这样做也存在一些缺点。其中最重要的是,生产系统中观察到的问题可能很难在调试系统中再现。为了克服这个限制,往往需要从生产系统收集额外的信息,以便加强观察,并更好地进行实验。
就算是利用一个调试系统进行调试,往往也希望收集更多的信息,而不只是JSP直接返回的那些信息。为此,我们需要对代码进行测量(instrument)。测量是指某种记录或度量。在这里,就是需要增加代码来报告或记录系统在各个步骤与过程中的状态。
图书导读







