程序错误

本页使用了标题或全文手工转换,现处于中国大陆简体模式
求闻百科,共笔求闻
重定向Bug
第一次被发现的导致计算机错误的飞蛾,也是第一个计算机程序错误。
广州地铁票务检验机发生程序出错弹出对话框

程序错误(英语:Bug),是程序设计中的术语,是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。有些程序错误会造成计算机安全隐患,此时叫做漏洞

一些有趣的隐错有时也会成为一种乐趣。在电脑游戏中,假如一些隐错不令游戏出现大错误的话,经常会变成一种玩游戏时的秘技(秘技有时是游戏设计人故意造成的,用于程序设计上的检查,绕过不需要的步骤直接检验需要的地方时所使用的代码)。

有严重后果的程序错误会受到广泛关注。[1]修补、改正软件程序错误的过程被称为调试

Bug的词源

来自于工程学

Bug用来指工程上的错误这种用法大约出现在1870年代,早在电脑出现之前就存在了。目前最早找到的证据是爱迪生在1878年的信[2]

It has been just so in all of my inventions. The first step is an intuition, and comes with a burst, then difficulties arise—this thing gives out and [it is] then that "Bugs"—as such little faults and difficulties are called—show themselves and months of intense watching, study and labor are requisite before commercial success or failure is certainly reached.

中文翻译如下:

在我所有的发明中都如此。第一步是直觉,然后灵光一闪,然后出现困难——这件事发生了,然后“Bug”——这样称呼那些微小的错误和困难——展现出来。在明确到达商业的成功或失败之前,数个月的密切关注、研究和劳动是必需的。

资讯工程与一般大众所知的起源

在1947年9月9日,葛丽丝·霍普(Grace Hopper)发现了第一个电脑上的bug。有一次Mark II突然宕机,整个团队都搞不清楚为什么电脑不能正常运作了。经过大家的深度挖掘,发现原来是一只飞蛾意外飞入了一台电脑内部而引起了故障(如图所示)。这个团队很快排调试误,并在日志本中记录下了这一事件。也因此,人们逐渐开始用“Bug”(原意为“虫子”)来称呼计算机中的隐错。现在在华盛顿美国国家历史博物馆中还可以看到这个遗稿。[3]

Bug的管理与一些常见的名词

典型错误历史(GNU Classpath project 数据)。由用户提交的错误是“未确认”(unconfirmed)的,一旦该错误由开发人员重现,即为“已确认”(confirmed)错误。此后已确认的错误会“解决”(fixed)。其他类别的错误(无法重现、不予解决等)通常并不多见。
  • 处理进度
    • New:代表新回报的Bug
    • Resolved:代表Bug已处理完(见下方“处理方式”)
    • Closed:处理完并已被验证
  • 处理方式
    • Fixed:Bug被解决
    • Later:必须到未来的版本才能解决。
    • Workaround:不能解决,但能用其他替代方法来避开问题的。
    • Duplicate:重复回报的Bug
    • Severity:Bug造成的严重性
    • Debugging(简称Debug):指解决Bug的动作和过程(调试)。

参见

参考资料

  1. 软件 Bug 引发的十次严重后果 - 文章 - 伯乐在线. [2017-02-04]. 
  2. Hughes, Thomas Parke. American Genesis: A Century of Invention and Technological Enthusiasm, 1870-1970. 1989: 75. ISBN 978-0-14-009741-2. 
  3. Log Book With Computer Bug , National Museum of American History