|T=zh-cn:程序错误; zh-tw:程式錯誤;
}}
[[File:First Computer Bug, 1945.jpg|thumb|第一次被发现的导致计算机错误的[[飞蛾]],也是第一个计算机程序错误。]]
[[File:Guangzhou metro ticket machine failure 2014-01-25(1).jpg|thumb|广州地铁票务检验机发生弹出程序出错弹出对话框]]
'''程序错误'''({{lang-en|'''Bug'''}}),是[[程序设计]]中的術語,是指在[[软件]]运行中時因为[[電腦程式|程序]]本身有错误而造成的功能不正常、[[死机]]、数据丢失、非正常中断等现象。有些程序错误会造成计算机安全隐患,此时叫做'''[[漏洞]]'''。
一些有趣的隐错有时也会成为一种乐趣。在[[电脑游戏]]中,假如一些隐错不令遊戲出現大錯誤的話,经常会变成一种玩游戏时的[[秘技]](秘技有時是遊戲設計人者故意造成的加入,用於檢查程序設計上的檢查,繞過不需要的步驟直接檢驗需要的地方時所使用的代碼)。
有严重后果的程序错误会受到广泛关注。<ref>{{Cite web |url=http://blog.jobbole.com/97/ |title=软件 Bug 引发的十次严重后果 - 文章 - 伯乐在线 |access-date=2017-02-04 |archive-url=https://web.archive.org/web/20170205181500/http://blog.jobbole.com/97/ |archive-date=2017-02-05 |dead-url=yes }}</ref> 修补、改正软件程序错误的过程被称为[[调试]]。
==「Bug」的詞源==
=== 來自於工程學 ===
Bug用bug來指工程上的錯誤這種用法大約出現在1870年代,早在電腦出現之前就存在了。目前最早找到的證據是[[爱迪生|愛迪生]]在1878年的信<ref>{{Cite book|title=American Genesis: A Century of Invention and Technological Enthusiasm, 1870-1970|last=Hughes|first=Thomas Parke|publisher=|year=1989|isbn=978-0-14-009741-2|location=|pages=75}}</ref><blockquote>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.</blockquote>中文翻譯如下:<blockquote>在我所有的發明中都如此。第一步是直覺,然後靈光一閃,然後出現困難——這件事發生了,然後“Bug”——這樣稱呼那些微小的錯誤和困難——展現出來。在明確到達商業的成功或失敗之前,必需數個月的密切關注、研究和勞動是必需的。</blockquote>
=== 資訊工程與一般大眾所知的起源 ===
在1947年9月9日,[[葛麗絲·霍普]](Grace Hopper)发现了第一个电脑上的bug。有一次[[計算機硬體歷史#巨像電腦|Mark II]]突然宕機,整个隊团队都搞不清楚为什么电脑为何不能正常运作了。经过大家的深度挖掘,发现原来是一隻有[[飛蛾]]意外飛入了一臺電腦內部而引起了故障(如圖所示)。这个团队很快-{}-排除-{}-错误,并在日誌本中记录下了这一事件。也因此,人们逐渐开始用“Bug”(原意为“虫子”)来称呼计算机中的隐错。现在在[[华盛顿哥伦比亚特区|华盛顿]]的[[美国国家历史博物馆]]中还可以看到这个份遗稿。<ref>[http://americanhistory.si.edu/collections/search/object/nmah_334663 Log Book With Computer Bug] {{Wayback|url=http://americanhistory.si.edu/collections/search/object/nmah_334663 |date=20170323220950 }}, National Museum of American History</ref>
== Bug的管理與一些常見的名詞 ==
[[File:Classpath bugs.png|thumb|350px|left|典型錯誤歷史([[GNU Classpath]] project 數據)。由用戶提交的錯誤是「未確認」(unconfirmed)的,(unconfirmed),一旦該錯誤由開發人員重現,即為「已確認」(confirmed)錯誤。此後已確認的錯誤會「解決」(fixed)。其他類別的錯誤(無法重現、不予解決等)通常並不多見。]]
{{-}}
* 處理進度
** New:代表新回報的Bug错误
** Resolved:代表Bug错误已處理完(見下方「處理方式」)
** Closed:處理完並已被驗證
* 處理方式
** Fixed:Bug被Fixed:错误已解決
** Later:必須到未來的版本才能解決。
** Workaround:不能解決,但能可用其他[[權變措施|替代方法]]来避開問題的。
** Duplicate:重複回報的Bug错误
** Severity:BugSeverity:错误造成的嚴重性度
** Debugging(简称Debug):指解决Bug错误的动作和过程([[调试]])。
== 参见 ==
*[[Therac-25案例]]
* {{link-en|漏洞獎勵計劃|Bug bounty program}}
*[[Gotcha (编程)|Gotcha(编程)]]
*[[軟體缺陷指標|軟體缺陷指-{}-標]]
|