提问的智慧
正在提问时

精确描述问题

精确描述问题,是让别人能够继续诊断的前提。你不需要一次写成论文,但必须提供足够事实,让回答者不用先反复追问最基本的信息。

需要写清楚的信息

  • 仔细、清楚地描述你的问题或 Bug 的症状。
  • 描述问题发生的环境(机器配置、操作系统、应用程序、以及相关的信息),提供经销商的发行版和版本号(如:Fedora Core 4Slackware 9.1等)。
  • 描述在提问前你是怎样去研究和理解这个问题的。
  • 描述在提问前为确定问题而采取的诊断步骤。
  • 描述最近做过什么可能相关的硬件或软件变更。
  • 尽可能地提供一个可以重现这个问题的可控环境的方法。

预先回答可能的追问

尽量去揣测一个黑客会怎样反问你,在你提问之前预先将黑客们可能提出的问题回答一遍。

你可以把自己放在回答者的位置上想一想:

  • 我知道问题在哪个版本、哪台机器、哪种配置下发生吗?
  • 我知道它是稳定复现,还是偶尔出现吗?
  • 我知道提问者已经排除了哪些原因吗?
  • 我能照着描述复现同样的问题吗?

如果答案是否定的,就继续补充信息。

可复现环境尤其重要

以上几点中,当你报告的是你认为可能在代码中的问题时,给黑客一个可以重现你的问题的环境尤其重要。当你这么做时,你得到有效的回答的机会和速度都会大大的提升。

“可复现”不一定意味着完整复制你的生产环境。一个最小示例、一段触发错误的配置、一组输入数据,或者一条明确的命令,都可能足以让别人观察同样的现象。

延伸阅读

Simon Tatham 写过一篇名为《如何有效地报告Bug》的出色文章。强力推荐你也读一读。