當前位置:首頁 » 編程軟體 » 編譯器bug的缺點

編譯器bug的缺點

發布時間: 2022-07-10 00:08:37

⑴ BUG是什麼意思啊

Bug一詞的原意是「臭蟲」或「蟲子」。但是現在,在電腦系統或程序中,如果隱藏著的一些未被發現的缺陷或問題,人們也叫它「Bug」,這是怎麼回事呢?
原來,第一代的計算機是由許多龐大且昂貴的真空管組成,並利用大量的電力來使真空管發光。可能正是由於計算機運行產生的光和熱,引得一隻小蟲子�Bug 鑽進了一支真空管內,導致整個計算機無法工作。研究人員費了半天時間,總算發現原因所在,把這只小蟲子從真空管中取出後,計算機又恢復正常。後來,Bug這個名詞就沿用下來,表示電腦系統或程序中隱藏的錯誤、缺陷、漏洞或問題。
與Bug相對應,人們將發現Bug並加以糾正的過程叫做「Debug」,意即「捉蟲子」或「殺蟲子」。遺憾的是,在中文裡面,至今仍沒有與「Bug」准確對應的詞彙,於是只能直接引用「Bug」一詞。雖然也有人使用「臭蟲」一詞替代「Bug」,但容易產生歧義,所以推廣不開。
後來就直接用bug 在現在很多的軟體測試中 都用Bug來說明那些問題
[編輯本段]程序設計方面的解釋
◆ 所謂「(Bug)」,是指電腦系統的硬體、系統軟體(如操作系統)或應用軟體(如文字處理軟體)出錯。硬體的出錯有兩個原因,一是設計錯誤,一是硬體部件老化失效等。
軟體的錯誤全是廠家設計錯誤。那種說用戶執行了非法操作的提示,是軟體廠商不負責的胡說八道。用戶可能會執行不正確的操作,比如本來是做加法但按了減法鍵。這樣用戶會得到一個不正確的結果,但不會引起bug發作。
軟體廠商在設計產品時的一個基本要求,就是不允許用戶做非法的操作。只要允許用戶做的,都是合法的。用戶根本就沒有辦法知道廠家心裡是怎麼想的,哪些操作序列是非法的。從電腦誕生之日起,就有了電腦BUG。第一個有記載的bug是美國海軍的編程員,編譯器的發明者格蕾斯·哈珀(GraceHopper)發現的。哈珀後來成了美國海軍的一個將軍,領導了著名計算機語言Cobol的開發。
1945年9月9日,下午三點。哈珀中尉正領著她的小組構造一個稱為「馬克二型」的計算機。這還不是一個完全的電子計算機,它使用了大量的繼電器,一種電子機械裝置。第二次世界大戰還沒有結束。哈珀的小組日以繼夜地工作。機房是一間第一次世界大戰時建造的老建築。那是一個炎熱的夏天,房間沒有空調,所有窗戶都敞開散熱。
突然,馬克二型死機了。技術人員試了很多辦法,最後定位到第70號繼電器出錯。哈珀觀察這個出錯的繼電器,發現一隻飛蛾躺在中間,已經被繼電器打死。她小心地用鑷子將蛾子夾出來,用透明膠布帖到「事件記錄本」中,並註明「第一個發現蟲子的實例。」
從此以後,人們將計算機錯誤戲稱為蟲子(bug),而把找尋錯誤的工作稱為(debug)。
程序中隱藏的功能缺陷或錯誤。由於現在的軟體復雜程度早已超出了一般人能控制的范圍,如Win95、Win98這樣的較成熟的操作系統也會不定期地公布其中的Bug。如何減少以至消滅程序中的Bug,一直是程序員所極為重視的課題。
[編輯本段]其他廣義解釋
在現在的一些游戲中表示某一部分出現了漏洞,玩家應用這些漏洞可以獲得某種不應出現的獎勵或效果。為了減少這種情況的發生,游戲廠商們大力加強游戲的升級和補丁(不一定是網路游戲,單機游戲也有升級和補丁一說)。很多玩家利用這些漏洞牟取利益,突顯個性.例如:魔獸世界卡拉贊副本原來的館長BUG,盜賊的高躲閃MT格魯爾BUG,美服WOW玩家10分鍾內成60級帳號BUG.仙劍奇俠傳4無限錢幣BUG
如果BUG嚴重,網路游戲運營公司會採取回檔處理,以減少玩家利用BUG或者玩家因為BUG而造成的損失

⑵ 軟體BUG的程序設計方面的解釋

所謂「(Bug)」,是指電腦系統的硬體、系統軟體(如操作系統)或應用軟體(如文字處理軟體)出錯。硬體的出錯有兩個原因,一是設計錯誤,一是硬體部件老化失效等。
軟體的錯誤全是廠家設計錯誤。那種說用戶執行了非法操作的提示,是軟體廠商不負責的胡說八道。用戶可能會執行不正確的操作,比如本來是做加法但按了減法鍵。這樣用戶會得到一個不正確的結果,但不會引起bug發作。
軟體廠商在設計產品時的一個基本要求,就是不允許用戶做非法的操作。只要允許用戶做的,都是合法的。用戶根本就沒有辦法知道廠家心裡是怎麼想的,哪些操作序列是非法的。從電腦誕生之日起,就有了電腦BUG。第一個有記載的bug是美國海軍的編程員,編譯器的發明者格雷斯·霍波(GraceHopper)發現的。霍波後來成了美國海軍的一個將軍,領導了著名計算機語言Cobol的開發。
1945年9月9日,下午三點。霍波中尉正領著他的小組構造一個稱為「馬克二型」的計算機。這還不是一個完全的電子計算機,它使用了大量的繼電器,一種電子機械裝置。第二次世界大戰還沒有結束。哈珀的小組日以繼夜地工作。機房是一間第一次世界大戰時建造的老建築。那是一個炎熱的夏天,房間沒有空調,所有窗戶都敞開散熱。
突然,馬克二型死機了。技術人員試了很多辦法,最後定位到第70號繼電器出錯。霍波觀察這個出錯的繼電器,發現一隻飛蛾躺在中間,已經被繼電器打死。她小心地用鑷子將蛾子夾出來,用透明膠布帖到「事件記錄本」中,並註明「第一個發現蟲子的實例。」
從此以後,人們將計算機錯誤戲稱為蟲子(bug),而把找尋錯誤的工作稱為(debug)。
程序中隱藏的功能缺陷或錯誤。由於現在的軟體復雜程度早已超出了一般人能控制的范圍,如Win95、Win98這樣的較成熟的操作系統也會不定期地公布其中的Bug。如何減少以至消滅程序中的Bug,一直是程序員所極為重視的課題。

⑶ 編譯器錯誤。怎麼辦

這是兩個截然不同的概念。不是叫做:編譯器錯誤,而是應該叫做:編譯錯誤。如果說真的是編譯器內部本身(例如:c語言編譯器、或者是別的各種編程語言的編譯器)出現了bug 的話,那麼任何人也沒有辦法。只有開發編譯器軟體的軟體開發人員才能夠解決這樣的問題;
如果是在你的源程序中產生的各種編譯錯誤(例如:語法錯誤、語義錯誤等),那麼你只能夠仔細地檢查、編譯、調試你的源程序了。

⑷ bug是什麼

BUG」的由來:

Bug一詞的原意是「臭蟲」或「蟲子」。但是現在,在電腦系統或程序中,如果隱藏著的一些未被發現的缺陷或問題,人們也叫它「Bug」,這是怎麼回事呢?
原來,第一代的計算機是由許多龐大且昂貴的真空管組成,並利用大量的電力來使真空管發光。可能正是由於計算機運行產生的光和熱,引得一隻小蟲子�Bug鑽進了一支真空管內,導致整個計算機無法工作。研究人員費了半天時間,總算發現原因所在,把這只小蟲子從真空管中取出後,計算機又恢復正常。後來,Bug這個名詞就沿用下來,表示電腦系統或程序中隱藏的錯誤、缺陷或問題。

與Bug相對應,人們將發現Bug並加以糾正的過程叫做「Debug」,意即「捉蟲子」或「殺蟲子」。遺憾的是,在中文裡面,至今仍沒有與「Bug」准確對應的詞彙,於是只能直接引用「Bug」一詞。雖然也有人使用「臭蟲」一詞替代「Bug」,但容易產生歧義,所以推廣不開。

所謂「(Bug)」,是指電腦系統的硬體、系統軟體(如操作系統)或應用軟體(如文字處理軟體)出錯。硬體的出錯有兩個原因,一是設計錯誤,一是硬體部件老化失效等。軟體的錯誤全是廠家設計錯誤。那種說用戶執行了非法操作的提示,是軟體廠商不負責的胡說八道。用戶可能會執行不正確的操作,比如本來是做加法但按了減法鍵。這樣用戶會得到一個不正確的結果,但不會引起bug發作。軟體廠商在設計產品時的一個基本要求,就是不允許用戶做非法的操作。只要允許用戶做的,都是合法的。用戶根本就沒有辦法知道廠家心裡是怎麼想的,哪些操作序列是非法的。
從電腦誕生之日起,就有了電腦BUG。第一個有記載的bug是美國海軍的編程員,編譯器的發明者格蕾斯·哈珀(GraceHopper)發現的。哈珀後來成了美國海軍的一個將軍,領導了著名計算機語言Cobol的開發。
1945年9月9日,下午三點。哈珀中尉正領著她的小組構造一個稱為「馬克二型」的計算機。這還不是一個完全的電子計算機,它使用了大量的繼電器,一種電子機械裝置。第二次世界大戰還沒有結束。哈珀的小組日以繼夜地工作。機房是一間第一次世界大戰時建造的老建築。那是一個炎熱的夏天,房間沒有空調,所有窗戶都敞開散熱。
突然,馬克二型死機了。技術人員試了很多辦法,最後定位到第70號繼電器出錯。哈珀觀察這個出錯的繼電器,發現一隻飛蛾躺在中間,已經被繼電器打死。她小心地用攝子將蛾子夾出來,用透明膠布帖到「事件記錄本」中,並註明「第一個發現蟲子的實例。」[1]
從此以後,人們將計算機錯誤戲稱為蟲子(bug),而把找尋錯誤的工作稱為(debug)。

⑸ 編譯器如何危及應用程序的安全

對於編譯器如何將人類可讀的代碼翻譯成機器運行的機器碼,大多數程序員通常只有大概的概念。在編譯過程中,編譯器會對代碼進行優化,使其能高效的運行。有的時候,編譯器在優化上面走的太遠了,它甚至移除了本不應該移除的代碼,導致應用程序更加脆弱。
MIT人工智慧和計算機科學實驗室的四位研究人員調查了(PDF) 不穩定優化(optimization-unstable)代碼的問題——編譯器移除的包含未定義行為的代碼。所謂的未定義行為包括了除以0,空指針間接 引用和緩沖溢出等。在某些情況下,編譯器完整移除未定義行為代碼可能會導致程序出現安全弱點。
研究人員開發了一個靜態檢查器STACK去識別不穩定的 C/C++代碼,他們在足球平台出租測試的系統中發現上百個新bug:Linux內核發現32個bug,Mozilla發現3個,Postgres 9個和Python 5個。STACK掃描了Debian Wheezy軟體包倉庫8575個含有C/C++代碼的軟體包,發現其中3471個至少包含一個不穩定的代碼。研究人員認為這是一個非常普遍的問題。

⑹ 誰知道c語言各個編譯器優缺點越詳細越好

編譯器種類很多,最主流的還是turbo和VC,主流的東西可參考資料多,建議用這兩個。但VC好用些,圖形環境。

⑺ 為什麼軟體里總會有那麼多Bug

1. 人的天性
大多數——當然不是全部——軟體 bug 源於我們自己犯的錯誤。雖然有些是因為軟體編碼工具和編譯器發生了意外,但是大部分的錯誤得歸咎於我們自己。
無論我們受到的 SDL 培訓和安全工具有多麼強大,只要我們還是人,我們就會犯錯。如果你想問為什麼電腦軟體會有這么多的漏洞,歸根到底是因為,人的天性就是容易犯錯。
也就是說,我們在減少人為錯誤方面做得還不夠。有很多程序員因為沒有受到足夠的 SDL 培訓(有的甚至乾脆就沒有培訓),所以根本就沒有安全編程的理念。有時候我特別奇怪:有那麼多的程序員以寫安全軟體為生,卻居然不懂如何安全地編程。別不信,我敢打賭,你正在運行的銀行安全軟體中的 bug 不會比它能提供的保護措施少,搞不好甚至更多。
但是即使是那些經過嚴格訓練的程序員還是不可避免出現 bug。舉個例子,前不久有個自鳴得意的傢伙發明的使用 HTML 標記欄位確定顏色的緩沖區在瀏覽器中溢出了。不像以前還要輸入 FFFFFh 之類的東西,黑客甚至可以直接執行顏色域的代碼,從而導致瀏覽器過度消耗資源、緩沖區溢出。看到沒有,這就是漏洞!而且很少會有人能預料到這種情況。
2. 不斷增加的軟體復雜性
就其本質而言,軟體越復雜,就意味著代碼行數越多。只要你在編程,那麼即使你有多擅長寫代碼,也一定會有錯誤和 bug 出現。有人曾說,如果你能做到每 50 行代碼中只出現一個錯誤,那你就已經做得相當好了。大多數程序員差不多每隔 5 至 15 行就會犯錯。想像一下,這么說吧,一般性的 Linux 內核擁有超過 1500 萬行的代碼,有多少 bug 你自己算吧!
即使沒有編碼錯誤,互聯網時代應用程序的整體互動性也是漏洞被攻擊的途徑。大多數程序員不得不和其他 API 協作,保存和檢索文件,在多種設備上正常工作。所有這些過程都會增加被成功擊破的概率。
而要防守的話,則需要寫更多的代碼,因為得抵禦各種不同的攻擊渠道。這么說吧,如果有一個只有 30 條匯編語言指令的惡意程序,那麼針對相應的防守,你可能至少得寫 50000 條匯編語言指令!
3. Fuzzers 也是人寫出來的
新近冒出來的 Fuzzers 軟體主要用於掃描軟體漏洞。Fuzzers——以及其他用於尋找編碼錯誤和漏洞的任何程序——都是人寫出來的,還是這句話,是人就會犯錯誤。例如 Fuzzers 是不會發現顏色屬性的緩沖區溢出這種情況的,這是因為我們在寫 Fuzzers 的時候沒有考慮這一方面。不過當我們意識到這一點並對 Fuzzers 進行更新之後,就能做到去查找各種類似的緩沖區溢出條件的欄位。簡而言之,我們要 Fuzzers 做什麼,它才會去做什麼。
4. 缺乏對供應商的問責
許多安全專家抱怨,只要我們不能找到證據起訴供應商的軟體缺陷,我們就永遠不會變得更安全。我贊同這一點,增加對供應商的問責有助於降低安全風險,但是同時卻有可能會減緩進度。不過如果軟體公司比現在更能擔當起責任來,那麼我想我們能在手機上、電腦上能自由自在沖浪的感覺會更爽。
但是成功源於功能和速度,而非安全。社會現狀決定了我們必須犧牲一部分安全和保障去換取新鮮感。這不一定是壞事——因為能讓我們成功得更快。但是這樣一來我們就不得不承擔這樣做的後果。不過到目前為止,我們還是心甘情願為了添加更酷的新鮮玩意兒而面對更多的風險。
5. 缺乏對黑客的問責
現實是上面沒有一條能很快解決。但是軟體出現漏洞就其本身而言,真不是什麼大問題。說它脆弱是因為這些軟體在面對惡意攻擊的時候毫無抵擋之力。除非我們能制止黑客的猖獗行徑,否則惡意軟體將會一直困擾著我們。

⑻ BUG是什麼意思

◆ 所謂「(Bug)」,是指電腦系統的硬體、系統軟體(如操作系統)或應用軟體(如文字處理軟體)出錯。硬體的出錯有兩個原因,一是設計錯誤,一是硬體部件老化失效等。
軟體的錯誤全是廠家設計錯誤。那種說用戶執行了非法操作的提示,是軟體廠商不負責的胡說八道。用戶可能會執行不正確的操作,比如本來是做加法但按了減法鍵。這樣用戶會得到一個不正確的結果,但不會引起bug發作。
軟體廠商在設計產品時的一個基本要求,就是不允許用戶做非法的操作。只要允許用戶做的,都是合法的。用戶根本就沒有辦法知道廠家心裡是怎麼想的,哪些操作序列是非法的。從電腦誕生之日起,就有了電腦BUG。第一個有記載的bug是美國海軍的編程員,編譯器的發明者格蕾斯·哈珀(GraceHopper)發現的。哈珀後來成了美國海軍的一個將軍,領導了著名計算機語言Cobol的開發。
1945年9月9日,下午三點。哈珀中尉正領著她的小組構造一個稱為「馬克二型」的計算機。這還不是一個完全的電子計算機,它使用了大量的繼電器,一種電子機械裝置。第二次世界大戰還沒有結束。哈珀的小組日以繼夜地工作。機房是一間第一次世界大戰時建造的老建築。那是一個炎熱的夏天,房間沒有空調,所有窗戶都敞開散熱。
突然,馬克二型死機了。技術人員試了很多辦法,最後定位到第70號繼電器出錯。哈珀觀察這個出錯的繼電器,發現一隻飛蛾躺在中間,已經被繼電器打死。她小心地用鑷子將蛾子夾出來,用透明膠布帖到「事件記錄本」中,並註明「第一個發現蟲子的實例。」
從此以後,人們將計算機錯誤戲稱為蟲子(bug),而把找尋錯誤的工作稱為(debug)。
程序中隱藏的功能缺陷或錯誤。由於現在的軟體復雜程度早已超出了一般人能控制的范圍,如Win95、Win98這樣的較成熟的操作系統也會不定期地公布其中的Bug。如何減少以至消滅程序中的Bug,一直是程序員所極為重視的課題。
[編輯本段]其他廣義解釋
在現在的一些游戲中表示某一部分出現了漏洞,玩家應用這些漏洞可以獲得某種不應出現的獎勵或效果。為了減少這種情況的發生,游戲廠商們大力加強游戲的升級和補丁(不一定是網路游戲,單機游戲也有升級和補丁一說)。很多玩家利用這些漏洞牟取利益,突顯個性.例如:魔獸世界卡拉贊副本原來的館長BUG,盜賊的高躲閃MT格魯爾BUG,美服WOW玩家10分鍾內成60級帳號BUG.仙劍奇俠傳4無限錢幣BUG
如果BUG嚴重,網路游戲運營公司會採取回檔處理,以減少玩家利用BUG或者玩家因為BUG而造成的損失

熱點內容
hadoop雲存儲 發布:2025-02-09 01:02:49 瀏覽:453
兒童編程網站推薦 發布:2025-02-09 01:02:48 瀏覽:673
u盤文件夾無法顯示 發布:2025-02-09 01:02:15 瀏覽:508
安卓機頭燈哪個好 發布:2025-02-09 01:02:05 瀏覽:123
數據濾波演算法 發布:2025-02-09 01:00:29 瀏覽:123
孔加工編程 發布:2025-02-09 01:00:29 瀏覽:152
八爪魚執行腳本 發布:2025-02-09 00:54:50 瀏覽:817
希捷硬碟緩存是多大的 發布:2025-02-09 00:50:24 瀏覽:17
浙江電腦伺服器租用虛擬主機 發布:2025-02-09 00:29:48 瀏覽:77
安卓網在哪裡 發布:2025-02-09 00:29:36 瀏覽:392