程序错误(英语:Bug),是程序设计中的术语,是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。有些程序错误会造成计算机安全隐患,此时叫做漏洞。
一些有趣的隐错有时也会成为一种乐趣。在电脑游戏中,假如一些隐错不令游戏出现大错误的话,经常会变成一种玩游戏时的秘技(秘技有时是游戏设计人故意造成的,用于程序设计上的检查,绕过不需要的步骤直接检验需要的地方时所使用的代码)。
有严重后果的程序错误会受到广泛关注。 修补、改正软件程序错误的过程被称为调试。
Bug用来指工程上的错误这种用法大约出现在1870年代,早在电脑出现之前就存在了。目前最早找到的证据是爱迪生在1878年的信
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 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”(原意为“虫子”)来称呼计算机中的隐错。现在在华盛顿的美国国家历史博物馆中还可以看到这个遗稿。