首頁 >常見問題 >軟體調試的目的是什麼

軟體調試的目的是什麼

青灯夜游
青灯夜游原創
2021-06-10 15:54:4116578瀏覽

軟體偵錯的目的在於:改正錯誤。軟體調試是將編制的程式投入實際運作前,用手工或編譯程式等方法進行測試,修正語法錯誤和邏輯錯誤的過程;它是確保電腦資訊系統正確性的必不可少的步驟。

軟體調試的目的是什麼

本教學操作環境:windows7系統、Dell G3電腦。

軟體偵錯的目的在於:改正錯誤。

軟體偵錯的概念

軟體偵錯是泛指重現軟體缺陷問題,定位與 找出問題根源,最終解決問題的過程。軟體除錯通常有以下兩種不同的定義:

  • 定義1:

    軟體除錯是為了發現並排除軟體程式中的錯誤,可以透過某種方法控制被調試程序的執行過程,以便隨時查看和修改被調試程序執行狀態的方法。在這個定義中,軟體測試屬於軟體除錯的一部分,與 牛津字典中的調試定義類似。在牛津字典中調試定義為:“識別和排除電腦硬體或軟體中錯誤的過程。”

  • #定義2:

    調試是執行一次成功的測試之後所要進行的工作。所謂成功的測試,是指它可以證明程式沒 有實現預期的功能。調試包含兩個步驟,從執行了一個成功測試案例,發現問題後開始;第一步,確定程序 中可疑錯誤的準確性質和位置;第二步,修改錯誤。在該定義中軟體測試從調試工作中分離出來。

軟體除錯的內涵

#軟體除錯是將編制的程式投入實際運作前,用手動或編譯程式等方法進行測試,修正語法錯誤和邏輯錯誤的過程。 這是保證電腦資訊系統正確性的必不可少的步驟。編完計算機程序,必須送入計算機測試。根據測試時所發現的錯誤,進一步診斷,找出原因和具體的位置來修正。

調試這個術語可能意味著很多不同的事情,但最字面的意思是,它意味著從程式碼中刪除錯誤、異常和bug。現在,有很多方法可以做到這一點。例如,可以透過掃描程式碼以查找輸入錯誤或使用程式碼分析器進行偵錯。您可以使用效能分析器來偵錯程式碼。或者,可以使用調試器進行調試。

#軟體偵錯的基本流程

##依照定義1,#軟體系統偵錯的基本流程如下:

  • ##用編輯程式把編制的原始程式依照一定的書寫格式送到電腦中,編輯程式會根據使用人員的意圖對原始程式進行增、刪或修改。

  • 把送入的原始程式翻譯成機器語言,即用編譯程式對原始程式進行語法檢查並將符合語法規則的原始程式語句翻譯成電腦能辨識的「語言」。如果經過編譯程式檢查,發現有語法錯誤,那就必須用編輯程式來修改原始程式中的語法錯誤,然後再編譯,直到沒有語法錯誤為止。

  • 使用電腦中的連接程序,把翻譯好的電腦語言程式連接起來,並扶植成一個電腦能真正運作的程式。在連線過程中,一般不會出現連線錯誤,如果出現了連線錯誤,表示來源程式中存在子程式的呼叫混亂或參數傳遞錯誤等問題。這時又要用編輯程式對原始程式進行修改,再進行編譯和連接,如此反覆進行,直到沒有連接錯誤為止。

  • 將修改過的程式進行試算,這時可以假設幾個模擬資料去試運行,並將輸出結果與手動處理的正確結果進行比較。如有差異,表示計算機的程式有邏輯錯誤。如果程式不大,可以用人工方法去模擬電腦對原始程式的這幾個資料進行修改處理;如果程式比較大,人工模擬顯然行不通,這時只能將電腦設定成單步執行的方式,一步步跟踪程序的運行。一旦找到問題所在,仍然要用編輯程式來修改原始程序,接著仍要編譯、連接和執行,直到無邏輯錯誤為止。也可以在完成後再進行編譯。

依照定義2,軟體系統偵錯的基本流程如下:

  • 重現問題:重現軟體測試發現的問題;

  • ##問題定位:​​決定可能發生問題的程式段位置;

  • 找出原因:分析相關程式碼,確定導致缺陷問題的內在原因;

  • 設計方案:提出軟體缺陷問題解決方案;
  • # 修改程式碼:根據設計方案修改程式碼;


驗證和確認:採用審查、分析和測試等技術來確定錯誤是否被排除,是否引入了新的錯誤。

#上述6個步驟不斷迭代進行,直至問題解決。軟體偵錯基本流程如圖1所示:

#################################################################################### #######################在這些步驟中,問題定位和查找原因是軟體偵錯的關鍵環節,其工作量約佔總工作量的90 %以上。軟 件調試是一項既耗時又費力,同時又富有技巧性的工 作。目前軟體調試中的問題定位研究的比較多。 ######可以看到,定義一的流程更貼合我們的日常開發測試工作;而定義二的流程更貼合我們測試特別是軟體發布或上線後發現問題的處理相關工作。 ###

軟體調試基本特徵

  • 廣泛的關聯性
    需要調試人員有著雄厚的電腦基礎知識(包括作業系統、開發語言、工具等)以及精通面​​向的業務問題領域知識。
  • 難度大
    從"廣泛的關聯性"就可以知道難度大不大了。當然也看面臨的具體問題和調試人員的素質
  • 難以預估完成時間
    這個時間真的是沒法預估,除非某個問題的領域專家和對軟體整體架構及程式碼的理解熟悉程度。

軟體偵錯分類

  • 依偵錯目標的系統環境分類:Windows下的軟體偵錯、Linux下的軟體偵錯、Dos下的軟體偵錯等
  • 以目標程式碼的執行方式分:
    腳本程式– 腳本偵錯器
    執行編譯的程式:
            先編譯為中間程式碼,執行時動態編譯為目前CPU能夠執行的目標程式碼(例如C#開發的.NET程式) – 託管偵錯
            直接編譯並連結成目標程式碼的程式(C/C ) – 本地調試
            兼具以上兩種的調試
  • 以目標程式碼的執行模式分:用戶態偵錯(User Mode Debugging)、核心態偵錯(Kernel Mode Debugging);
    在Windows這樣的多任務作業系統中,作為保證安全性和秩序的一個根本措施,系統定義了兩種執行模式,即低特權等級的使用者模式(User Mode)和高特權等級的核心模式(Kernel Mode)。
    應用程式程式碼是運行在使用者模式下的,作業系統的核心、執行體和大多數裝置驅動程式是運行在核心模式的。
  • 依軟體所處的階段分:開發期調試、產品期調試(分界線是產品的正式發布)
  • 按調試器和調試目標的相對位置分:本機提哦啊哈斯、遠端調試
  • 按調試目標的活動性分:活動目標調試、轉儲文件調試   

更多相關知識,請訪問常見問題欄位!

以上是軟體調試的目的是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn