• 調試器

    編輯
    本詞條由“匿名用戶” 建檔。

    調試器

    編輯

    調試器,是一個計算機程序用于測試和調試其他程序。調試器的主要用途是在受控條件下運行目標程序,以使程序員能夠跟蹤其進行中的操作并xxx計算機資源(通常是目標程序或計算機操作系統使用的內存區域)的變化,這可能表明代碼故障。典型的調試功能包括能夠在特定點運行或暫停目標程序、顯示內存、CPU寄存器或存儲設備(例如磁盤驅動器)的內容以及修改內存或寄存器內容的能力,以便輸入可能導致程序執行錯誤。

    要檢查的代碼也可以在指令集仿真器(ISS)上運行,該技術可以在遇到特定條件時使其具有強大的停止能力,但通常比直接在適當的條件下執行代碼要慢一些。 一些調試器提供兩種操作模式,即完全或部分仿真,以限制這種影響。

    調試器

    當程序由于編程錯誤或無效數據而無法正常繼續運行時,將出現“陷阱”?。例如,程序可能試圖使用當前版本的CPU上不可用的指令,或者試圖訪問不可用或受保護的內存。當程序“捕獲”或達到預設條件時,如果它是源級調試器或符號調試器,則調試器通常會在原始代碼中顯示該位置,這在集成開發環境中通常很常見。如果它是低級調試器或機器語言調試器,則會在?反匯編(除非它也可以在線訪問原始源代碼,并且可以顯示來自匯編或編譯的代碼的適當部分)。

    調試器的功能

    編輯

    通常,調試器在其頂層提供查詢處理器,符號解析器,表達式解釋器和調試支持接口。調試器還提供更復雜的功能,例如在某個事件或指定的指令下通過逐步運行程序(單步執行或程序動畫)、停止(中斷)(暫停程序檢查當前狀態)、斷點并跟蹤變量的值。一些調試器能夠在程序運行時修改程序狀態。也有可能在程序的其他位置繼續執行以繞過崩潰或邏輯錯誤。

    使調試器對糾正錯誤有用的相同功能使其可以用作軟件破解工具來規避復制保護,數字版權管理和其他軟件保護功能。通常,它還可用作通用驗證工具,故障覆蓋率和性能分析器,尤其是在顯示了指令路徑長度的情況下。[3]早期基于磁盤的微型計算機通常受益于以下功能:診斷和恢復損壞的目錄或注冊表數據記錄,“取消刪除”標記為已刪除的文件或破解文件密碼保護。

    大多數主流的調試引擎(例如gdb和dbx)都提供基于控制臺的命令行界面。調試器前端是調試器引擎的流行擴展,它們提供IDE集成、程序動畫和可視化功能。

    記錄并重放調試

    記錄并重放調試,也稱為“軟件飛行記錄”或“程序執行記錄”,捕獲應用程序狀態更改并將其存儲為磁盤,以執行程序中的每個指令。然后可以反復回放記錄,并進行交互式調試以診斷和解決缺陷。記錄和重放調試對于遠程調試以及解決間歇性,不確定性和其他難以再現的缺陷非常有用。

    反向調試

    一些調試器包括稱為“反向調試”的功能,也稱為“歷史調試”或“向后調試”。這些調試器可以使程序的執行及時倒退。各種調試器都包含此功能。Microsoft Visual Studio(2010 Ultimate版、2012 Ultimate、2013 Ultimate和2015 Enterprise版)提供了針對C#、Visual Basic .NET和某些其他語言(而非C ++)的IntelliTrace反向調試。反向調試器也適用于C、C ++、Java、Python、Perl和其他語言。有些是開源的。有些是專有的商業軟件。一些反向調試器將目標速度降低了幾個數量級,但是xxx的反向調試器將速度降低了2倍或更小。反向調試對于某些類型的問題非常有用,但仍不常用。

    語言依賴

    編輯

    一些調試器使用一種特定的語言運行,而其他調試器可以透明地處理多種語言。例如,如果主目標程序是用COBOL編寫的,但是調用了匯編語言子例程和PL / 1子例程,則調試器可能必須動態切換模式以適應發生的語言變化。

    內存保護

    編輯

    一些調試器還集成了內存保護功能,以避免諸如緩沖區溢出之類的存儲違規行為。這在事務處理環境中非常重要,在事務處理環境中,根據任務逐個從內存“池”動態分配內存。

    調試的硬件支持

    編輯

    大多數現代微處理器在其CPU設計中至少具有以下功能之一,以使調試更加容易:

    • 單步執行程序的硬件支持,例如trap flag。
    • 滿足Popek和Goldberg虛擬化要求的指令集使編寫調試器軟件變得更加容易,該調試器軟件與被調試軟件在同一CPU上運行;這樣的CPU可以全速執行被測程序的內部循環,并且仍然處于調試器的控制之下。
    • 系統內編程允許外部硬件調試器對被測系統進行重新編程(例如,添加或刪除指令斷點)。具有此類ISP支持的許多系統還具有其他硬件調試支持。
    • 對代碼和數據斷點的硬件支持,例如地址比較器和數據值比較器,或者包括大量工作在內的頁面錯誤硬件。
    • JTAG訪問硬件調試接口,例如ARM體系結構處理器上的接口或使用Nexus命令集。嵌入式系統中使用的處理器通常具有廣泛的JTAG調試支持。
    • 僅有6個引腳微控制器需要使用低引腳數的JTAG替代品,例如Atmel AVR上的BDM、Spy-Bi-Wire或debugWIRE。例如,DebugWIRE在RESET引腳上使用雙向信令。

    調試器前端

    編輯

    一些功能xxx大且最受歡迎的調試器僅實現簡單的命令行界面(CLI),通常可xxx程度地提高可移植性并xxx程度地減少資源消耗。開發人員通常認為通過圖形用戶界面(GUI)進行調試更容易,效率更高。這是視覺前端,使用戶能夠xxx和控制屈從CLI-僅通過調試器的原因的圖形用戶界面。一些GUI調試器前端被設計為與各種僅CLI的調試器兼容,而另一些則針對一個特定的調試器。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/117127/

    (5)
    詞條目錄
    1. 調試器
    2. 調試器的功能
    3. 記錄并重放調試
    4. 反向調試
    5. 語言依賴
    6. 內存保護
    7. 調試的硬件支持
    8. 調試器前端

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久