軟件調試 筆記1

-----------------------------《軟件調試》前言---------------------------------------------------------------------------

指令集(Instruction Set):一臺計算機認識的所有指令

程序:按照一定格式編寫的指令序列

通用計算機:同一臺計算機,執行不同的指令,就可以完成不同的任務

軟件(Software):計算機程序和他的文檔

軟件開發(Software Development):將用戶需求轉變成產品的過程

臭蟲(Bug),軟件缺陷(Defect):隱藏在軟件中的設計失誤。19世紀七bug就被用來描述電子設備中的設計缺陷。愛迪生就用過。


-----------------------------《軟件調試》第一章---------------------------------------------------------------------------

軟件調試(Software Debugging):探索軟件缺陷根源並尋求解決方案的過程,重現軟件故障(failure),定位故障根源,解決軟件故障。To detect,locate and correct logicalor syntactical error in a program or malfunctions in hardware。

重現故障:在用於調試的系統上重複導致故障的步驟,是要調試的問題出現在被調試系統中

定位:使用各種工具調試手法找到導致軟件故障的根源(root cause)。

解決軟件故障:探索和實現解決方案並驗證之,驗證OK則關閉問題。


軟件調試分類:

按被調試程序運行的操作系統劃分:DOS軟件調試,WINDOWS軟件調試,LINUX軟件調試。通常針對編譯爲機器碼的native程序而言。.Net和Java這樣的不在其中。

俺目標代碼執行方式分:腳本語言開發叫腳本調試,用的是腳本調試器。相對應的是編譯執行程序調試,而他又分爲本地調試(C/C++)和託管調試(C#,JAVA)和混合調試(同一個調試會話中既包含本地代碼調試,又包含託管代碼調試)。

按目標代碼執行分:用戶模式調試,內核態調試。

按調試階段分:開發期調試(發佈前),產品期調試(產品發佈後,主要靠客戶客戶反饋和軟件自動錯誤報告機制獲得)

產品其調試特點:很可能與特定的使用環境和使用方式有關;問題範圍更大,解決過程時就逐漸縮小問題範圍,有的問題根源不屬於本產品;有些模塊可能是別的公司的,沒有代碼和文檔,需要彙編級分析跟蹤和堆棧數據;通常無法再客戶機上調試;更緊迫。

按調時器與調試目標的相對位置分:被調試程序和調時期在同一系統中,成爲本機調試(包括在同一臺機器上不不同虛擬機中);調試器和被調試程序不在同一臺計算機上,通過以太網或其他某種連接完成調試的,稱作遠程調試(USB,1394調試windows內核,不算遠程調試)。

按調是目標活動性分:活動目標調試(Live Target Debugging)和轉儲文件調試(Dump File Debugging)。轉儲文件以文件形式將調試目標內存凝固下來,包含某時刻程序運行狀態,這是定位產品期問題,系統崩潰和應用程序崩潰的一種有效方式。

按調試工具分:調試器調試(斷點,單步執行,跟蹤執行),不使用調試器調試(調試信息輸出,日誌文件,觀察內存和文件等) 

調試技術:

a.斷點(Breakpoint):CPU執行到某位置的時候,停止執行被調試程序,中斷到調試器(break into debugger),讓調試者分析調試。調試者分析完後,可以讓被調試程序恢復執行。

按斷點設置空間分爲:

代碼斷點:設置在內存空間中的斷點,其地址通常是某一段代碼的起始處

數據斷點:設置在內存空間中的斷點,其地址一般要見識變量的起始地址。當被調試程序訪問指定內存地址的數據時斷點命中。根據需要,可定義出發斷點的方式和寬度。

IO斷點:設置在IO空間中的斷點,其地址爲某IO地址。當程序訪問指定io地址的端口是中斷到調試器。也可以設置被觸發的寬度。

按斷點設置方法分爲:

硬件斷點:設置CPUde調試寄存器來設置,IA32有8個調試寄存器DR0-DR7,對一個調時會話,可同時設置最多4個硬件斷點。

軟件斷點:想制定代碼位置摻入專業斷點指令是先,如IA32 CPU的int 3指令(機器指令0xCC)

追蹤點(Tracepoint):設置一個追蹤點時,調試器內部會做特殊的斷點來處理。當調試器受到斷點時間後,會找出追蹤點定義的行爲,通常打印提示信息或者變量值,燃盡皮被調試程序繼續執行。(這個號自動啊,不錯不錯)

條件斷點(Conditional Breakpoint):類似於最總店,用戶設置一個條件斷點時馬士基插入一個無條件斷點,然後再命中時候,調試器檢查這個斷電的附加條件,如果不滿足立刻恢復執行,滿足則中斷給用戶。

b.單步執行

c.輸出調試信息

d.日誌

e.事件追蹤

f.轉儲文件

g.棧回朔

h.反彙編

i.觀察修改數據

j.控制被調試線程進程


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章