A.3. 如何用Subversion进行倒退测试
上一页 | 附录 A. 如何报告错误 | 下一页

## A.3. 如何用Subversion进行倒退测试

一个经常发生的问题是‘它从前可以工作，但现在不行了’。 此处将提供一步步的过程以帮助定位问题何时产生。这 不是为普通用户而设。

首先，你需要从Subversion处获得MPlayer的代码树。 此页面 底部你将会发现相应指示。

在客户端，你现在将在mplayer/目录下得到一份Subversion的镜像。 现在把此镜像更新到你所想要的日期：

    cd mplayer/
    svn update -r {"2004-08-23"}

日期格式是YYYY-MM-DD HH:MM:SS。 用此日期格式你将根据补丁提交的日期将其提取出来，如 MPlayer-cvslog archive. 所示

现在继续对于普通更新所需步骤：

    ./configure
    make

如果有非程序员阅读至此，找到问题发生处的最快方法是使用二分法查找—， 即循环不断地将搜索间隔日期除二。 例如，如果问题发生在2003年，从这一年的中间查起，然后自问"问题已经在这里了 么？" 如果回答肯定，回溯到四月一号；如不在，前进到十月一号，以此类推。

如果你有很多空余的硬盘空间（完全编译现在将占用100MB，如果调试标志被指定， 大概占用300-350MB），在更新前复制一份最近的正常版本；如果你要返回，这将 节约一些时间。 （在重新编译一份较早版本前经常需要执行'make distclean'，所以如果你没有 备份你原始的代码树，当你回到当前代码时，你将不得不重新编译其中的所有代 码。）

当你发现问题发生的那日期，使用mplayer-cvslog压缩文档（按日期排序）继续查找， 并且用更精确的包含小时，分钟，秒的查询。

    svn update -r {"2004-08-23 15:17:25"}

这将使你很容易的发现是哪个补丁引起的问题。

如果你发现了引起问题的补丁，你几乎成功了；把它报告到： MPlayer Bugzilla或者 注册到 MPlayer-users 并且把错误发送到那里。 有可能原始作者站出来提交一个修正。 你也可以仔细阅读补丁直到发现错误产生的地方:-)。

上一页 | 上一级 | 下一页
A.2. 如何修正错误 | 起始页 | A.4. 如何提交错误