Chapter 6. 找出和报告缺陷

6.1. 如何报告一个缺陷

编写:Gerard Patel

(提取自 wine/documentation/bugreports)

有两种方式来报告一个缺陷。其一是使用一个简单的 perl 脚本,如果你不想花很长时间来生成报告则建议你使用这种方式。它被设计来供所有人使用,从新手到高级开发者。你也可以通过困难的方式制作一个缺陷报告 -- 高级开发者可能有此偏好。

6.1.1. 简单的方式

 

  1. 要使这种方法工作你的计算机上必须有 perl。要找出你是否有 perl,可运行 which perl。如果它返回象 /usr/bin/perl 这样的东西,则你有可运行的 Perl。否则跳到(skip on down to)"困难方式"。如果你不确信,继续进行好了。当你运行这个脚本时,如果你没有 perl,状况是会是显而易见的。

  2. 把目录改变为 <dirs to wine>/tools

  3. 键入 ./bug_report.pl 并给随着这个目录。

  4. comp.emulators.ms-windows.wine newsgroup 发送一个消息并加上 "Nice Formatted Report" 附件。如果可能的话,上载完整的调试输出到一个 web/ftp 服务器并在你的消息中提供地址。

6.1.2. 困难的方式

一些简单的建议可以使你的缺陷报告更有用(这样更容易得到回答和修理):

 

  1. 尽可能多的传送信息。

    这意味着我们更多的信息而不是一个简单的 "我运行 MS Word 的时候它崩溃了。你知道为什么吗?" 至少包括下列信息:

     

    • 你使用的 Wine 版本(运行 wine -v)

    • 你使用的操作系统,什么发布(如果是的话),和什么版本

    • 编译器和版本(运行 gcc -v)

    • Windows 版本,如果你安装了的话

    • 你正在尝试运行的程序,它的版本号,和从中获取这个程序的一个 URL(如果可获取的话)

    • 你启动 wine 的命令行

    • 你认为有关的或有帮助的任何其他信息,如在 X 问题的情况下 X 服务器版本,libc 版本等。

  2. 加上 --debugmsg +relay 选项重新运行程序(比如,wine --debugmsg +relay sol.exe)。

    如果在运行你的程序时 Wine 崩溃了,这些信息对于对我们找出导致崩溃的原因很重要。这可能输出大量(好多 MB)信息,所以最好输出到一个文件中。在 Wine-dbg> 提示符出现的时候,键入 quit

    你可能想要尝试 +relay,+snoop 而不是 +relay,但是请注意 +snoop 是非常不稳定的并且经常比一个简单的 +relay 更早崩溃! 如果在这种情况下,则请使用 +relay!! 在多数情况下加上 +snoop 时的缺陷报告是没用的!

    要跟踪输出请使用下列命令:

     

    所有 shell:
    $ echo quit | wine -debugmsg +relay [other_options] program_name >& filename.out; 
    $ tail -n 100 filename.out > report_file
                      

    (这将把 wine 的调试信息只打印到文件接着自动退出。使用这个命令可能是个好主意,因为 wine 打印输出太多的调试信息,它们会溢出终端,吞噬 CPU。)

    tcsh 和其他 csh 式样的 shell:
    $ wine -debugmsg +relay [other_options] program_name |& tee filename.out;
    $ tail -100 filename.out > report_file
                      
    bash 和其他 sh 式样的 shell:
    $ wine -debugmsg +relay [other_options] program_name 2>&1 | tee filename.out;
    $ tail -100 filename.out > report_file
                      

    report_file 将包含最后一百行调试输出,包括寄存器复制和回溯(backtrace),这是信息中最重要的部分。即使你不理解它们的意思,也请不要删除它们。

  3. 传送你的报告到新闻组 comp.emulators.ms-windows.wine

    在你的帖子中,包括第1部分的所有信息,并插入在第二部分中的输出文件中的文本。如果你这样作了,你收到一些有帮助的响应的机会就会很大。

6.1.3. 问题和注释

如果读了本文档之后还有一些东西搞不明白,或者认为可以解释的更好,或者是应该包括的,请向 comp.emulators.ms-windows.wine 发帖子来让我们知道如何改进这个文档。