什麼是Bug?定義(電腦科學)

第一批現代電腦並不小,也不是以同樣的方式運作,而是基於更大的機械和電子零件。

從時間上來說,我們正處於第二次世界大戰期間,更具體地說是 1944 年,當時Mark II計算機(由 IBM 在哈佛製造)的電磁繼電器發生故障,而電磁繼電器是當時計算機的基本組件。

當打開電腦並尋找受影響的繼電器時,負責人發現一隻飛蛾(英文為“ bug ”)潛入系統,撞上了處於開啟狀態的繼電器。

從那時起,每當該計算機出現某種類型的錯誤時,負責管理該計算機的科學家就開始談論“錯誤” ,這個術語發了財,指的是阻止計算機正常運行的各種問題和錯誤。硬體.

隨著時間的推移,以及硬體可靠性的提高和小型化的同時,電腦遇到的大多數問題仍然出現在軟體部分,儘管名稱錯誤透過命名這些錯誤賺了一大筆錢。

我們該如何理解現代意義上的錯誤?嗯,簡單來說,就是程式設計時的失敗,導致原始碼的一部分包含本質錯誤,從而導致生成的程式在運行時出現問題。

每當使用者執行一系列操作時,或當發生一系列情況時,這些錯誤可能會引起重複出現的問題,這些情況在以相同順序執行相同操作時並不總是重複,而是取決於程式的外部因素

因此,例如,我們可能會在記憶體中載入的一個程式和另一個不同的程式之間發生衝突,但是當我們對這兩個應用程式執行了一系列操作時,就會出現問題。

程式設計中最常見的錯誤有除零、緩衝區溢位、記憶體違規、程式中未考慮處理的操作錯誤、對變數的錯誤存取…

​程式設計工具通常提供檢測和修正這些問題的解決方案,首先檢查原始程式碼並應用邏輯規則(例如,如果在聲明變數並定義其類型之前存取變數),然後使用程式測試工具。允許我們使用輸入的值並檢查包含執行資訊的日誌。

這個過程稱為“調試”,源自英文術語“debug”(清理錯誤)。

錯誤的陰暗面是它們可以為運行受影響程式的系統上執行惡意軟體打開大門。

由於一旦引起錯誤,就有辦法利用作業系統引起的問題來執行從外部注入的任意程式碼。

如果我們再加上可以在系統中獲得的特權,我們將面臨非常嚴重的潛在危險,網路犯罪分子多次利用這種危險來存取第三方系統。