除毋著工具
偵錯器(英語:Debugger)亦稱偵錯程式、偵錯工具,指出一種用偵錯其他程式的電腦程式佮工具。會當予程式碼佇指令組模擬器(ISS)中會當檢查運行狀況以及選擇性地運行,通好排毋著去、偵錯。當開發的進度拄著坎站抑是揣袂出佗位有問題的時陣,這技術將是非常有路用的。但是共程式運行佇咧偵錯器之下,這將比直接咧運作的平台以及處理器上執行閣較愛來會慢。
當程式當機時,若偵毋著器是屬於來源階段偵毋著器(source-level debugger)抑是象徵階段偵錯器(symbolic debugger), 偵錯器就會當顯示重耽誤所在的原始碼,並且整合開發環境內底嘛會當看著。若是屬於低階偵錯器(low-level debugger)抑是機器語言偵錯器(machine-language debugger)的話,伊會當顯示的是第一逝的反組譯碼(遮的機會是講,當發生原因是因為程式設計師咧設計上的疏失,使得程式無法度繼續正常執行的情況。譬如講程式去試去調用某一个著佇咧該版本的 CPU 上來講是無合理的操作,抑是對保護抑是無法度存取的記持體位置來進行寫入去)。
典型的偵錯器通常會當佇咧程式執行的時擁有以下遮的功能,譬如講單步執行(single-stepping)、 利用中斷點(breakpoint)使程式拄著各種類的事件(event)時停止(breaking)(一般用佇使程式停止佇想欲檢查的狀態)、 猶閣有追蹤某寡變數的變化。有一寡偵錯器嘛有能力佇想欲偵錯的程式佇執行狀態的時,去改變伊的狀態,毋但是用來觀察爾。
一个好的偵錯器存在的重要性無譀。就算一个程式的語言 / 平台佇電腦的行程內底運作非常良好。有偵錯器以及偵錯器的好䆀,對著一个程式語言佮平台來講,不時是會當正常執行的重要因素。橫直,軟體愛會當(抑是講不時的)執行佇無仝款的偵錯器下進行測試,是足重要的。毋過因為偵錯器出現將做對軟體程式的內部時間的不可避免的改變。所以乎,就算講是一个這个上近完美的偵錯器,佇多工環境抑是分散式系統之下,伊嘛會閣較歹去試著執行的時(runtime)的問題。
一个偵錯器除了會當用來偵錯(debug), 按呢仝款,伊嘛定定予人用來做破解軟體的工具,親像用來跳過軟體的防複製保護,猶閣有破解序號驗證,以及其他的軟體保護功能。
大部份的主流偵錯工程,譬如講 gdb 和 dbx 提供是對主控台的命令提供介面(console-based command line)。 偵錯器前端應用,這馬普遍是提供予整合式開發工具(IDE)做偵錯引誘、動態化、視覺化等特點。
硬體偵錯器
大部份現代微處理器𪜶攏至少會有以下遮的特點的其中一个包含佇𪜶的 CPU 設計內底,予得偵錯閣較容易:
- 硬體支援單步執行(single-steping)程式,猶閣有設定旗標(flag)。
- 利用 Popek and Goldberg virtualization requirements 指令組使伊閣較容易去設計偵錯軟體,予偵錯軟體會當用仝款的 CPU 下執行的時,有如使用純軟體偵錯一般。按呢乎 CPU 就有可能佇咧測試的程式的時陣,以全速執行的狀態之下同時會使保持程式執行速度,並予伊猶原保持佇咧偵錯器的控制之下。
- 佇系統編程允准一臺外佇硬體偵錯器,咧測試的時重新編輯一个程式系統,若是增加抑是去除指示的中斷點
- 硬體支援資料斷點(breakpoint)的設定,譬如講專門處理分頁錯誤的硬體的資料斷點的設定。
- 設有 JTAG
偵錯器列表
參見
參考資料
- Jonathan B . Rosenberg , How Debuggers Work : Algorithms , Data Structures , and Architecture , John Wiley & Sons , ISBN 空九四百七十一孵一鼻四千九百六十六鼻七
外部連結
- Learn the essentials of debugging How to improve your debugging skills , a good article at IBM developerWorks .
- OpenRCE : Various Debugger Resources and Plug-ins