windows support: remove _UWIN define
[mplayer.git] / DOCS / xml / zh_CN / bugreports.xml
blob01100d208f75b7c6a4816289ff3ab1f9ac6b00e1
1 <?xml version="1.0" encoding="utf-8"?>
2 <!-- synced with r21612 -->
3 <appendix id="bugreports">
4 <title>如何报告错误</title>
6 <para>
7 好的错误报告对于任何软件项目都是非常有价值的贡献。但如同写好软件一样,好的错误
8 报告也牵涉一些工作。请意识到大多数开发者非常忙碌,每天收到大量邮件。所以如果你
9 的反馈对提高<application>MPlayer</application>很重要并能得到很多认可,请理解你
10 必须提供我们所需的<emphasis role="bold">所有</emphasis>信息,并遵守下文所述守
11 则。
12 </para>
15 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
18 <sect1 id="bugreports_security">
19 <title>报告安全相关错误</title>
21 <para>
22 如果你发现了一个可被利用的错误并且你愿意做正确的事而且在你揭露出错误之
23 前让我们修正此错误,我们很高兴在<ulink url="mailto:security@mplayerhq.hu">
24 security@mplayerhq.hu</ulink>收到你关于安全注意的电子邮件。
25 请在标题中加注[SECURITY]或者[ADVISORY]字样。
26 请确定你的报告包含了对于错误完整而细致的分析。
27 更欢迎提交相关修正。
28 如发现概念上可被利用的错误请不要停留,你可以在另一封邮件中提交此报告。
29 </para>
30 </sect1>
33 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
36 <sect1 id="bugreports_fix">
37 <title>如何修正错误</title>
39 <para>
40 如果你觉得你有足够能力,你也会被邀请自行修改此错误。或者你已经做了?请阅读
41 <ulink url="../../tech/patches.txt">此文档</ulink>以找出如何将您的代码加入
42 <application>MPlayer</application>。如果你有问题,在
43 <ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">MPlayer-dev-eng</ulink>
44 邮件列表里的人将会帮助你。
45 </para>
46 </sect1>
49 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
52 <sect1 id="bugreports_regression_test">
53 <title>如何用Subversion进行倒退测试</title>
55 <para>
56 一个经常发生的问题是‘它从前可以工作,但现在不行了’。
57 此处将提供一步步的过程以帮助定位问题何时产生。这
58 <emphasis role="bold">不</emphasis>是为普通用户而设。
59 </para>
61 <para>
62 首先,你需要从Subversion处获得MPlayer的代码树。
63 <ulink url="http://www.mplayerhq.hu/dload.html">此页面</ulink>
64 底部你将会发现相应指示。
65 </para>
67 <para>
68 在客户端,你现在将在mplayer/目录下得到一份Subversion的镜像。
69 现在把此镜像更新到你所想要的日期:
70 <screen>
71 cd mplayer/
72 svn update -r {"2004-08-23"}
73 </screen>
74 日期格式是YYYY-MM-DD HH:MM:SS。
75 用此日期格式你将根据补丁提交的日期将其提取出来,如
76 <ulink url="http://lists.mplayerhq.hu/pipermail/mplayer-cvslog/">MPlayer-cvslog archive</ulink>.
77 所示
78 </para>
80 <para>
81 现在继续对于普通更新所需步骤:
82 <screen>
83 ./configure
84 make
85 </screen>
86 </para>
88 <para>
89 如果有非程序员阅读至此,找到问题发生处的最快方法是使用二分法查找&mdash;,
90 即循环不断地将搜索间隔日期除二。
91 例如,如果问题发生在2003年,从这一年的中间查起,然后自问"问题已经在这里了
92 么?"
93 如果回答肯定,回溯到四月一号;如不在,前进到十月一号,以此类推。
94 </para>
96 <para>
97 如果你有很多空余的硬盘空间(完全编译现在将占用100MB,如果调试标志被指定,
98 大概占用300-350MB),在更新前复制一份最近的正常版本;如果你要返回,这将
99 节约一些时间。
100 (在重新编译一份较早版本前经常需要执行'make distclean',所以如果你没有
101 备份你原始的代码树,当你回到当前代码时,你将不得不重新编译其中的所有代
102 码。)
103 </para>
105 <para>
106 当你发现问题发生的那日期,使用mplayer-cvslog压缩文档(按日期排序)继续查找,
107 并且用更精确的包含小时,分钟,秒的查询。
108 <screen>
109 svn update -r {"2004-08-23 15:17:25"}
110 </screen>
111 这将使你很容易的发现是哪个补丁引起的问题。
112 </para>
114 <para>
115 如果你发现了引起问题的补丁,你几乎成功了;把它报告到:
116 <ulink url="http://bugzilla.mplayerhq.hu/">MPlayer Bugzilla</ulink>或者
117 注册到
118 <ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users">MPlayer-users</ulink>
119 并且把错误发送到那里。
120 有可能原始作者站出来提交一个修正。
121 你也可以仔细阅读补丁直到发现错误产生的地方:-)。
122 </para>
123 </sect1>
126 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
129 <sect1 id="bugreports_report">
130 <title>如何提交错误</title>
132 <para>
133 首先请尝试<application>MPlayer</application>的最新Subversion版本,因为你的
134 错误可能已经在那里修正了。开发进展的相当快。正式发行版中的错误经常在几天甚
135 至几小时内被公布上来,所以请<emphasis role="bold">只使用Subversion</emphasis>
136 报告错误。
137 这包括<application>MPlayer</application>的二进制包。
138 Subversion的指令可在
139 <ulink url="http://www.mplayerhq.hu/dload.html">此页</ulink>底部查找,或在
140 README文件中。如果这未能提供帮助,请查询 已知错误
141 列表以及其后文档。
142 如果你的问题是未知的或在我们的指示下未能解决,请报告此错误。
143 </para>
145 <para>
146 请不要单独向开发者私自提交错误报告。这是团队工作,所以可能有另外一些人对此
147 感兴趣。有时其他用户已经体验到你的问题并且知道如何避免一个问题即使他在
148 <application>MPlayer</application>代码中是个错误。
149 </para>
151 <para>
152 请尽可能详细的描述你的问题。稍微做些测试工作以便缩小产生情况的范围。此错误
153 只在某些特定情况下发生吗?它只针对特定文件或文件类型吗?它只伴随一个编解码
154 器出现还是和编解码器无关?你能利用所有的输出驱动重复此错误吗?您提供的信息
155 越多我们越有可能解决你的问题。请别忘记提供下列有价值的信息,否则我们将不能
156 很好的查出你的问题。
157 </para>
159 <para>
160 一篇写的很好的关于在公共论坛上提问的指导是
161 <ulink url="http://www.catb.org/~esr/faqs/smart-questions.html">如何聪明的问问题</ulink>
162 由<ulink url="http://www.catb.org/~esr/">Eric S. Raymond</ulink>编写。
163 还有一篇
164 <ulink url="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">如何有效报告错误</ulink>
165 由<ulink url="http://www.chiark.greenend.org.uk/~sgtatham/">Simon Tatham</ulink>编写。
166 如果你遵循这些指导你将会得到帮助。但请明白我们都是自愿在空余时间查询邮件列表。我们非常忙
167 并且不能保证你的问题会得到解决甚至一个回答。
168 </para>
169 </sect1>
172 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
175 <sect1 id="bugreports_where">
176 <title>到哪里报告错误</title>
178 <para>
179 加入MPlayer-users邮件列表:
180 <ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users"/>
181 然后把你的错误报告发送到
182 <ulink url="mailto:mplayer-users@mplayerhq.hu"/>在那里,你也可以讨论它。
183 </para>
185 <para>
186 如果你喜欢,你也可以用我们另外使用我们全新的
187 <ulink url="http://bugzilla.mplayerhq.hu/">Bugzilla</ulink>。
188 </para>
190 <para>
191 此列表的语言为<emphasis role="bold">英文</emphasis>。
192 请遵循
193 <ulink url="http://www.ietf.org/rfc/rfc1855.txt">礼仪指导</ulink>标准
194 并且<emphasis role="bold">不要发送HTML邮件</emphasis>到我们任何一个邮
195 件列表上。你将会被忽略或禁止。如果你不知道什么是HTML邮件或为什么他是邪
196 恶的,阅读这篇
197 <ulink url="http://efn.no/html-bad.html">文章</ulink>。
198 他解释了所有的细节并有关闭HTML的指示。此外请注意我们不单独CC(抄送)给个
199 人,所以注册上来以便得到你的答案是个好主意。
200 </para>
201 </sect1>
204 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
207 <sect1 id="bugreports_what">
208 <title>报告什么</title>
210 <para>
211 你可能要在你的错误报告中包含日志,配置或例子文件。如果他们中一些非常大,
212 最好把它压缩(请尽量使用gzip或bzip2)并提交到我们的
213 <ulink url="ftp://upload.mplayerhq.hu/MPlayer/incoming/">FTP服务器</ulink>
214 上并且在你的错误报告中只包含路径及文件名称。我们的邮件列表有80k的信息限制,
215 如果你有更大的附件,你不得不压缩后提交。
216 </para>
218 <!-- ********** -->
220 <sect2 id="bugreports_system">
221 <title>系统信息</title>
223 <para>
224 <itemizedlist>
225 <listitem><para>
226 你的Linux发行版本或操作系统及版本,如:
227   <itemizedlist>
228     <listitem><para>Red Hat 7.1</para></listitem>
229     <listitem><para>Slackware 7.0 + devel packs from 7.1 ...</para></listitem>
230   </itemizedlist>
231 </para></listitem>
232 <listitem><para>
233 内核版本:
234   <screen>uname -a</screen>
235 </para></listitem>
236 <listitem><para>
237 libc版本:
238   <screen>ls -l /lib/libc[.-]*</screen>
239 </para></listitem>
240 <listitem><para>
241 gcc及ld版本:
242   <screen>
243 gcc -v
244 ld -v<!--
245   --></screen>
246 </para></listitem>
247 <listitem><para>
248 binutils版本:
249   <screen>as --version</screen>
250 </para></listitem>
251 <listitem><para>
252 如果你在全屏模式下出现问题:
253   <itemizedlist>
254     <listitem><para>视窗管理器类型及版本</para></listitem>
255   </itemizedlist>
256 </para></listitem>
257 <listitem><para>
258 如果你有关于XVIDIX的问题:
259   <itemizedlist>
260   <listitem><para>
261   X颜色深度:
262     <screen>xdpyinfo | grep "depth of root"</screen>
263   </para></listitem>
264   </itemizedlist>
265 </para></listitem>
266 <listitem><para>
267 如果只是GUI有错误:
268   <itemizedlist>
269     <listitem><para>GTK版本</para></listitem>
270     <listitem><para>GLIB版本</para></listitem>
271     <listitem><para>libpng版本</para></listitem>
272     <listitem><para>错误产生时的GUI情况</para></listitem>
273   </itemizedlist>
274 </para></listitem>
275 </itemizedlist>
276 </para>
277 </sect2>
279 <!-- ********** -->
281 <sect2 id="bugreports_hardware">
282 <title>硬件及驱动</title>
284 <para>
285 <itemizedlist>
286 <listitem><para>
287 CPU信息(这只在Linux上工作):
288   <screen>cat /proc/cpuinfo</screen>
289 </para></listitem>
290 <listitem><para>
291 显卡厂家及型号,例如:
292   <itemizedlist>
293     <listitem><para>ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM</para></listitem>
294     <listitem><para>Matrox G400 DH 32MB SGRAM</para></listitem>
295   </itemizedlist>
296 </para></listitem>
297 <listitem><para>
298 显卡驱动 &amp; 版本,例如:
299   <itemizedlist>
300     <listitem><para>X built-in driver</para></listitem>
301     <listitem><para>nVidia 0.9.623</para></listitem>
302     <listitem><para>Utah-GLX CVS 2001-02-17</para></listitem>
303     <listitem><para>DRI from X 4.0.3</para></listitem>
304   </itemizedlist>
305 </para></listitem>
306 <listitem><para>
307 声卡型号 &amp; 驱动,例如:
308   <itemizedlist>
309     <listitem><para>Creative SBLive! Gold with OSS driver from oss.creative.com</para></listitem>
310     <listitem><para>Creative SB16 with kernel OSS drivers</para></listitem>
311     <listitem><para>GUS PnP with ALSA OSS emulation</para></listitem>
312   </itemizedlist>
313 </para></listitem>
314 <listitem><para>
315 如果还存在疑问,包含LInux系统上的<command>lspci -vv</command>输出信息。
316 </para></listitem>
317 </itemizedlist>
318 </para>
319 </sect2>
321 <!-- ********** -->
323 <sect2 id="bugreports_configure">
324 <title>Configure问题</title>
326 <para>
327 当你在执行<command>./configure</command>,或一些自动检测发生错误,阅读
328 <filename>config.log</filename>。你可能会在那里发现答案。例如同一链接库的不同
329 版本共存于你的系统上,或者你忘记安装开发包(包含有-dev后缀)。如果你认为有错误,
330 在你的错误报告中包含<filename>config.log</filename>。
331 </para>
332 </sect2>
334 <sect2 id="bugreports_compilation">
335 <title>编译问题</title>
337 <para>
338 请包含这些文件:
339 <itemizedlist>
340   <listitem><para>config.h</para></listitem>
341   <listitem><para>config.mak</para></listitem>
342 </itemizedlist>
343 </para>
344 </sect2>
346 <!-- ********** -->
348 <sect2 id="bugreports_playback">
349 <title>回放错误</title>
351 <para>
352 请包含<application>MPlayer</application>在一级verbose模式下的输出,另外谨记
353 当你把它粘贴入邮件时<emphasis role="bold">不要截断输出</emphasis>
354 开发者需要所有信息以便正确诊断一个问题。你可以如下把输出定向到一个文件:
355 <screen>
356 mplayer -v <replaceable>options</replaceable> <replaceable>filename</replaceable> &gt; mplayer.log 2&gt;&amp;1
357 </screen>
358 </para>
360 <para>
361 如果你的问题只针对一个或更多文件,请把他们上传到:
362 <ulink url="ftp://upload.mplayerhq.hu/MPlayer/incoming/"/>
363 </para>
365 <para>
366 另外上传一个和你的原始文件有相同本名并用.txt为后缀的小文本文件。描述你在此文件
367 上遇到的问题,并且包含你的email以及<application>MPlayer</application>在verbose
368 一级模式下的输出。通常,文件的前1-5 MB足够用于重现问题,可是确定我们请你做:
369 <screen>
370 dd if=<replaceable>yourfile</replaceable> of=<replaceable>smallfile</replaceable> bs=1024k count=5
371 </screen>
372 它将提取'<emphasis role="bold">你的文件</emphasis>'的前5MB,并将它写入
373 '<emphasis role="bold">小文件</emphasis>'。然后在此小文件上重试,如果
374 错误重现,你的例子对我们已经足够了。
375 请<emphasis role="bold">千万不要</emphasis>通过邮件传送此文件!
376 上传并且只发送文件在FTP服务器上的路径/文件名。如果文件在网络上获得,那么发送
377 <emphasis role="bold">精确的</emphasis>URL就足够了。
378 </para>
379 </sect2>
381 <!-- ********** -->
383 <sect2 id="bugreports_crash">
384 <title>崩溃</title>
386 <para>
387 你需要在<command>gdb</command>里运行<application>MPlayer</application>并且把
388 完全输出发给我们,或者如果你有此崩溃的<filename>core</filename>输出,你能从
389 Core文件中提取有用的信息。如下:
390 </para>
393 <sect3 id="bugreports_debug">
394 <title>如何保存一个可重复崩溃的信息</title>
396 <para>
397 重新编译<application>MPlayer</application>并打开debug选项:
398 <screen>
399 ./configure --enable-debug=3
400 make
401 </screen>
402 然后在gdb中运行<application>MPlayer</application>:
403 <screen>gdb ./mplayer</screen>
404 你先在在gdb里面。输入:
405 <screen>
406 run -v <replaceable>options-to-mplayer</replaceable> <replaceable>filename</replaceable>
407 </screen>
408 重复你的崩溃。你一重现此现象,gdb将使你返回命令行,在此你输入
409 <screen>
411 disass $pc-32 $pc+32
412 info all-registers
413 </screen>
414 </para>
415 </sect3>
418 <sect3 id="bugreports_core">
419 <title>如何从core输出文件中提取有用信息</title>
421 <para>
422 创建如下命令文件:
423 <screen>
425 disass $pc-32 $pc+32
426 info all-registers
427 </screen>
428 然后只执行这个命令
429 <screen>
430 gdb mplayer --core=core -batch --command=command_file &gt; mplayer.bug
431 </screen>
432 </para>
433 </sect3>
434 </sect2>
435 </sect1>
438 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
441 <sect1 id="bugreports_advusers">
442 <title>我知道我在做什么...</title>
444 <para>
445 如果你依照如上步骤创建了一个正确的错误报告,并且你确信它是个
446 <application>MPlayer</application>中的错误,不是编译器或损坏文件,你已经读过
447 文档并且找不到解决方案,你的声卡驱动正常,那么你可能想注册到MPlayer-advusers
448 列表中并发送你的错误报告到那里,以便得到更好更快的回答。
449 </para>
451 <para>
452 请注意如果你提交新手问题或手册中已经解答的问题,你可能会被忽略甚至批评而不是
453 得到相应答案。所以不要骚扰我们并且只有你知道你自己在做什么并且觉得自己是个高
454 级<application>MPlayer</application>用户或开发者的时候才注册到-advusers。如果
455 你符合这些标准,查出如何注册并不困难...
456 </para>
457 </sect1>
459 </appendix>