大学
如何有效地报告 Bug
本文为配合上一文《提问的智慧》转帖。
——————————————以下为转帖内容——————————————————
作者:Simon Tatham 专业的自由软件程序员
翻译:Dasn
引言
为公众写过软件的人,大概都收到过很拙劣的bug(计算机程序代码中的错误或程序运行时的瑕疵——译者注)报告,例如:
在报告中说“不好用”;
所报告内容毫无意义;
在报告中用户没有提供足够的信息;
在报告中提供了错误信息;
所报告的问题是由于用户的过失而产生的;
所报告的问题是由于其他程序的错误而产生的;
所报告的问题是由于网络错误而产生的;
这便是为什么“技术支持”被认为是一件可怕的工作,因为有拙劣的bug报告需要处理。然而并不是所有的bug报告都令人生厌:我在业余时间维护自由软件,有时我会收到非常清晰、有帮助并且“有内容”的bug报告。
在这里我会尽力阐明如何写一个好的bug报告。我非常希望每一个人在报告bug之前都读一下这篇短文,当然我也希望用户在给我报告bug之前已经读过这篇文章。
简单地说,报告bug的目的是为了让程序员看到程序的错误。您可以亲自示范,也可以给出能导致程序出错的、详尽的操作步骤。如果程序出错了,程序员会收集额外的信息直到找到错误的原因;如果程序没有出错,那么他们会请您继续关注这个问题,收集相关的信息。
在bug报告里,要设法搞清什么是事实(例如:“我在电脑旁”和“XX出现了”)什么是推测(例如:“我想问题可能是出在……”)。如果愿意的话,您可以省去推测,但是千万别省略事实。
当您报告bug的时候(既然您已经这么做了),一定是希望bug得到及时修正。所以此时针对程序员的任何过激或亵渎的言语(甚至谩骂)都是与事无补的——因为这可能是程序员的错误,也有可能是您的错误,也许您有权对他们发火,但是如果您能多提供一些有用的信息(而不是激愤之词)或许bug会被更快的修正。除此以外,请记住:如果是免费软件,作者提供给我们已经是出于好心,所以要是太多的人对他们无礼,他们可能就要“收起”这份好心了。
“程序不好用” 程序员不是弱智:如果程序一点都不好用,他们不可能不知道。他们不知道一定是因为程序在他们看来工作得很正常。所以,或者是您作过一些与他们不同的操作,或者是您的环境与他们不同。他们需要信息,报告bug也是为了提供信息。信息总是越多越好。
许多程序,特别是自由软件,会公布一个“已知bug列表”。如果您找到的bug在列表里已经有了,那就不必再报告了,但是如果您认为自己掌握的信息比列表中的丰富,那无论如何也要与程序员联系。您提供的信息可能会使他们更简单地修复bug。
本文中提到的都是一些指导方针,没有哪一条是必须恪守的准则。不同的程序员会喜欢不同形式的bug报告。如果程序附带了一套报告bug的准则,一定要读。如果它与本文中提到的规则相抵触,那么请以它为准。
如果您不是报告bug,而是寻求帮助,您应该说明您曾经到哪里找过答案,(例如:我看了第四章和第五章的第二节,但我找不到解决的办法。)这会使程序员了解用户喜欢到哪里去找答案,从而使程序员把帮助文档做得更容易使用。
“演示给我看” 报告bug的最好的方法之一是“演示”给程序员看。让程序员站在电脑前,运行他们的程序,指出程序的错误。让他们看着您启动电脑、运行程序、如何进行操作以及程序对您的输入有何反应。
他们对自己写的软件了如指掌,他们知道哪些地方不会出问题,而哪些地方最可能出问题。他们本能地知道应该注意什么。在程序真的出错之前,他们可能已经注意到某些地方不对劲,这些都会给他们一些线索。他们会观察程序测试中的每一个细节,并且选出他们认为有用的信息。
这些可能还不够。也许他们觉得还需要更多的信息,会请您重复刚才的操作。他们可能在这期间需要与您交流一下,以便在他们需要的时候让bug重新出现。他们可能会改变一些操作,看看这个错误的产生是个别问题还是相关的一类问题。如果您不走运,他们可能需要坐下来,拿出一堆开发工具,花上几个小时来好好地研究一下。但是最重要的是在程序出错的时候让程序员在电脑旁。一旦他们看到了问题,他们通常会找到原因并开始试着修改。
“告诉我该怎么做” 如今是网络时代,是信息交流的时代。我可以点一下鼠标把自己的程序送到俄罗斯的某个朋友那里,当然他也可以用同样简单的方法给我一些建议。但是如果我的程序出了什么问题,我不可能在他旁边。“演示”是很好的办法,但是常常做不到。
如果您必须报告bug,而此时程序员又不在您身边,那么您就要想办法让bug重现在他们面前。当他们亲眼看到错误时,就能够进行处理了。
确切地告诉程序员您做了些什么。如果是一个图形界面程序,告诉他们您按了哪个按钮,依照什么顺序按的。如果是一个命令行程序,精确的告诉他们您键入了什么命令。您应该尽可能详细地提供您所键入的命令和程序的反应。
把您能想到的所有的输入方式都告诉程序员,如果程序要读取一个文件,您可能需要发一个文件的拷贝给他们。如果程序需要通过网络与另一台电脑通讯,您或许不能把那台电脑复制过去,但至少可以说一下电脑的类型和安装了哪些软件(如果可以的话)。
“哪儿出错了?在我看来一切正常哦!” 如果您给了程序员一长串输入和指令,他们执行以后没有出现错误,那是因为您没有给他们足够的信息,可能错误不是在每台计算机上都出现,您的系统可能和他们的在某些地方不一样。有时候程序的行为可能和您预想的不一样,这也许是误会,但是您会认为程序出错了,程序员却认为这是对的。
同样也要描述发生了什么。精确的描述您看到了什么。告诉他们为什么您觉得自己所看到的是错误的,最好再告诉他们,您认为自己应该看到什么。如果您只是说:“程序出错了”,那您很可能漏掉了非常重要的信息。
如果您看到了错误消息,一定要仔细、准确的告诉程序员,这确实很重要。在这种情况下,程序员只要修正错误,而不用去找错误。他们需要知道是什么出问题了,系统所报的错误消息正好帮助了他们。如果您没有更好的方法记住这些消息,就把它们写下来。只报告“程序出了一个错”是毫无意义的,除非您把错误消息一块报上来。
特殊情况下,如果有错误消息号,一定要把这些号码告诉程序员。不要以为您看不出任何意义,它就没有意义。错误消息号包含了能被程序员读懂的各种信息,并且很有可能包含重要的线索。给错误消息编号是因为用语言描述计算机错误常常令人费解。用这种方式告诉您错误的所在是一个最好的办法。
在这种情形下,程序员的排错工作会十分高效。他们不知道发生了什么,也不可能到现场去观察,所以他们一直在搜寻有价值的线索。错误消息、错误消息号以及一些莫名其妙的延迟,都是很重要的线索,就像办案时的指纹一样重要,保存好。
如果您使用UNIX系统,程序可能会产生一个内核输出(coredump)。内核输出是特别有用的线索来源,别扔了它们。另一方面,大多数程序员不喜欢收到含有大量内核输出文件的EMAIL,所以在发邮件之前最好先问一下。还有一点要注意:内核输出文件记录了完整的程序状态,也就是说任何秘密(可能当时程序正在处理一些私人信息或秘密数据)都可能包含在内核输出文件里。
“出了问题之后,我做了……” 当一个错误或bug发生的时候,您可能会做许多事情。但是大多数人会使事情变的更糟。我的一个朋友在学校里误删了她所有的Word文件,在找人帮忙之前她重装了Word,又运行了一遍碎片整理程序,这些操作对于恢复文件是毫无益处的,因为这些操作搞乱了磁盘的文件区块。恐怕在这个世界上没有一种反删除软件能恢复她的文件了。如果她不做任何操作,或许还有一线希望。
这种用户仿佛一只被逼到墙角的鼬(黄鼠狼、紫貂一类的动物——译者注):背靠墙壁,面对死亡的降临奋起反扑,疯狂攻击。他们认为做点什么总比什么都不做强。然而这些在处理计算机软件问题时并不适用。
不要做鼬,做一只羚羊。当一只羚羊面对料想不到的情况或受到惊吓时,它会一动不动,是为了不吸引任何注意,与此同时也在思考解决问题的最好办法(如果羚羊有一条技术支持热线,此时占线。)。然后,一旦它找到了最安全的行动方案,它便去做。
当程序出毛病的时候,立刻停止正在做的任何操作。不要按任何健。仔细地看一下屏幕,注意那些不正常的地方,记住它或者写下来。然后慎重地点击“确定” [...]
提问的智慧
今天在群里一个人问“我的 MySQL 为什么不启动了”,类似这样的问题已经不是第一次,想起以前看过的一篇文章《提问的智慧》,转帖到这里,用以自学,也用来给别人提醒,提问的时候要遵循基本的规则。
—————————————————以下为转帖内容——————————————
How To Ask Questions The Smart Way
提问的智慧
译者 D.H.Grand[本站会员]
Copyright (C) 2001 by Eric S. Raymond
中文版Copyleft 2001 by D.H.Grand(nOBODY/Ginux)
英文版:http://www.tuxedo.org/~esr/faqs/smart-questions.html
中文版:http://www.linuxforum.net/doc/smartq-grand.html
感谢Eric的耐心指点和同意,本文才得以完成并发布,本指南英文版版权为Eric StevenRaymond所有,中文版版权由D.H.Grand[nOBODY/Ginux]所有。
目录
简介 提问之前 怎样提问 谨慎选择论坛 尽量使用邮件列表 用辞贴切,语法正确,拼写无误 用易读格式发送问题 使用含义丰富,描述准确的标题 [...]
雏鹰展翅 志在蓝天
太原师范学院由山西大学师范学院、太原师范专科学校和山西省教育学院合并组建而成
,是山西省省城唯一一所本科师范院校,有着20年的本科和50年的专科办学历史。
除了抱怨,我们是不是该做点什么?
在《ECNU:一个让我心痛的地方》一文中我曾提到有幸到BNU进修一年。我曾为在BNU的一年没有完成自己的目标而后悔,我曾因自己并没有进入教育技术学科的大门而担心。当我身处ECNU,与众多教育技术学科出身的人同处一室的时候,我惊喜地发现我不是最差的。
我本身并非教育技术学专业出身,所在的单位没有教育技术学这一专业,也没有开设教育技术学公共课。我选择教育技术学只是凭着自己对教育技术学科的认识,当我花去两年多的时间即将跨入这一学科的大门时才发现,门里的很多人都在抱怨,抱怨教育技术学科没有自己的学科定位、抱怨教育技术学科没有自己的学科体系、抱怨教育技术学科没有广泛的应用领域,抱怨教育技术学科没有相应的社会认同、抱怨“学富五车”的自己因误入这一学科而被大材小用。而学界前辈专家学者对学科定位问题的研究他们不知道、学界前辈专家学者对构建学科体系所做出的努力他们不清楚、学界前辈专家学者对学科应用领域的拓展他们不了解;社会认同需要的我们教育技术学科人努力工作去争取而不只是抱怨他们没有思考,一大批认真工作而没有标榜自己学富五车的教育技术学科毕业生已经闯出了自己的一片新天地他们没有看到。
当我看到 time80s 所写的《拿什么来祝福你,我的学生,我的长辈》时,我有一些震惊,我也在反思。我们即将开题,开题之后,一年ECNU的学习生活也将结束。此情此景,除了抱怨,我们是不是该做点什么?
———————————————————(以下为引用内容)————————————————————
亲爱的学生,我的长辈,
就在今天,这个南方忽然降温的日子中,领导找我谈话了。原因是你的一封信,一封举报信。 我不想知道您是谁,虽然可以猜到。但,为什么要去猜呢?您在信中说到,我作为一名毕业论文指导老师不尽责,这让我很难接受。从8月份开始布置毕业论文,要求9月初交论文选题表,仅仅是选题表,您就一拖再拖,电话给您打了很多遍,您总是不露面。我不知道怎样去做,真的,老师很笨。
毕业论文在布置的时候,就一再强调,不要从网上抄。可是,亲爱的学生,我的长辈,您交过来的文章总是连HTML格式的标志都在。您总是说您很忙,是的,老师也是人,也能体会到,一边工作一边学习真的不容易,要处理工作、学习、家庭种种琐碎的事情。可是,亲爱的学生,您既然选择了学习这条道路,并且坚持到今天,为什么毕业论文不坚持下去呢?
一拖再拖,已经到10月底的时候,还是没有完成。在这样的情况下,我们决定,再安排几次集中辅导,并且我可以负责的说,我的电话打到您本人手中,跟您说“这是最后的机会了,即使您前面一点没有做,从现在开始,还有一个月的时间,我们安排的几次辅导课您必须要参加”,可是,您还是没有出现。
到目前为止,您的选题还没交来。
辅导课我们是从最基础的开始。并且可以负责的说,只要来听了,多少可以完成个大概。判断的依据是:这个班学生的程度都差不多,来参加辅导的学生到现在基本都完成的差不多了。
最后一次,您出现了。 那天来的人很多,有10多个,都带了自己的论文,代码,我在忙着给他们调试。您却在问我第一次辅导就已经强调过的问题。您说,我是否该放弃即将完成毕业论文的10多个人的辅导,耐心地给您讲ABC?
您在QQ上说,让我帮您完成毕业论文,我没有答应,跟您说了很多道理,您一再纠缠,我把您加如黑名单。
您一怒之下,给相关部门发去了举报信。
亲爱的学生,不,我的长辈。你们当中,有的在年龄上可以做我的哥哥、姐姐甚至叔叔、阿姨。人情事故的东西,你们比我懂。几年的学习当中,您总共来上过几次课?全日制的学生毕业论文一般要花整整一个学期去完成,您认真地花了几个小时?到最后关头,您毕业论文没法完成,能够去怪我么?事业上您可能比我成功,来上课的时候,我骑自行车您开汽车,经济上您比我条件好,那是事实。我没曾想过您的成功能带给我任何好出,甚至,我没有要求您去尊敬我这个老师。但,做人是否需要一点娘心?说话,是否需要一点依据。
亲爱的学生,我的长辈。也许毕业了您永远不会踏进学校大门,也许某个下雨的日子中您的车会从我身边一呼而过,溅我身上斑斑点点的污迹。也许,那个时候我们都形同陌路。您有您的人生准则,我也有我的处世原则。两条平行线上,我祝愿您一帆风顺。
某某老师 2007年11月27日
———————————————————(引用内容结束)—————————————————————
闵行印象之SJTU
上文已经提到,光棍节我们一行8人游了闵行,先后到ECNU闵行校区、SJTU闵行校区、滨江公园,本文谈一谈对SJTU闵行校区的印象。
SJTU,是教育部直属、教育部与上海市共建的全国重点大学,是国家 “七五”、“八五”重点建设和“211工程”、“985工程”的首批建设高校。
SJTU,更以培养了一大批著名的校友而闻名,校友中包括杰出的政治家、科学家、社会活动家、实业家、工程技术专家和医学专家,如江泽民、陆定一、丁关根、汪道涵、钱学森、吴文俊、张光斗、邹韬奋、黄炎培、邵力子、蔡锷、王安、陈敏章、陈竺等。在中国科学院、中国工程院院士中,有200余位交大校友;在国家23位“两弹一星”功臣中,有6位交大校友。
SJTU闵行校区从1985年开始建设,历经20多年,已基本建设成设施完善,环境优美的现代化大学校园。
SJTU闵行校区建筑风格一致又各具特色,校园环境优美,处处鲜花绽放(现在已经是立冬的节气啦)。校园公告栏里本科生科技创新奖励则突显了学校科研能力的提升。
遗憾的是,走在SJTU闵行校园时,心中正好翻起乱七八糟的往事,对SJTU认识不多,体会不深,错过了很多机会。
更多照片请查看相册。
