Windows中主流的調試器介紹

調試器,顧名思義,就是用於調試的工具。爲什麼要調試呢?這得從一條蟲子(bug)說起。江湖中傳說還是在第一代真空管電子計算機時代,有一次研究人員發現計算機的行爲不正常。於是他們就開始檢查每個環節想找到原因,最終他們在機器裏找到了條蟲子(bug)從而解決了問題。於是後來便把發現並解決程序中與預期不符的行爲稱之爲捉蟲或除蟲,也就bug加個De-前綴,即Debug。

 

火星人開發的程序是不是絕對沒有bug,我不清楚,因爲沒見過。但是地球人的話,我個人認爲鑑於自身思維上的不完備性註定了地球人開發的稍具規模的程序要完全正確幾乎不可能。那麼既然程序出現了bug,就要除掉它。修正的方法很多,比如檢視代碼、察看日誌、藉助調試工具等等。這裏重點要介紹的就是Windows系統中使用的較多的一些調試工具,它們各有特點,也各有用途。更多地瞭解它們,就能更好的利用它們高效的查錯。

 

u Visual Studio系列集成開發環境提供的調試器:Visual Studio系列作爲微軟提供的專業開發工具,配合其集成的可視化調試器,強大的能力那是可圈可點。尤其是VC++6.0(Visual Studio 98帶的,因爲重點是c++程序的調試,所以乾脆就直接提VC6好了)之後提供的Edit and Continue功能,太爽了,太爽了!從此開發人員簡直就變成了貓頭鷹,如虎添翼哈~。VC6最大的特點就是開發功能和調試功能完美結合,察看內存、調用堆棧、寄存器,調試動態庫,調試多線程,甚至直接進行彙編級的調試,功能可謂是琳琅滿目,應有盡有。一定要好好掌握,這是基礎。

 

u ntsd.exe:這是Windows系統自帶的一個小巧的用戶態調試器。到底是從Windows的哪個版本開始有的,我不清楚。但是Win2k之後的系統都有了。ntsd是NT Symbolic Debugger的簡寫。既然名字中都有Symbolic,那自然是表示帶有符號調試的功能,這一點很有用,以後會提到。ntsd因爲是系統自帶的調試器,所以用來在程序發佈後出現問題時收集信息時非常方便。只需要一個命令(先睹爲快:ntsd -pv -pn app.exe -c ".dump /ma app.dmp;-q")就能把進程的信息dump下來分析,相當實用。

 

強大的Windbg:這是ntsd的增強版,更確切的說,ntsd是WindDbg的精簡版。它提供了極爲強大的調試功能,支持用戶態和內核態源碼級的調試,圖形化的界面,使用起來還是挺方便的。關鍵是它可以很輕鬆的調試一些平常不容易解決的問題,比如死鎖,CPU佔用率100%,內存對破壞,堆棧破壞,程序崩潰等錯誤。如果你遇到這種棘手問題無法解決,那還等什麼呢,趕緊祭出WinDbg吧。當然,強大的調試器命令自然也比較多一點,必須承認學好它還是有點費時的。但是,想一想學好它後可以解決的問題,相信我,絕對值回票價。WinDbg可以在微軟官方網站下載,免費噢~

 

OllyDbg:這是一款提供可視化界面的Win32彙編級的調試器。儘管你可以用它調試任何Win32用戶態的程序,但是它的主要用戶都是在破解界和病毒木馬界。因爲它最大的特點是能夠自動的識別出大量的系統函數及函數參數、句柄對象、甚至直接修改二進制代碼,所以如果想要分析競爭對手的特色功能的話,嗯嗯。。。。學習OllyDbg的使用,可以去一些專業的破解技術的網站(或者說安全技術的網站),比如國內最專業的網站:看雪,www.pediy.com

 

u Softice:儘管我已經多年沒有再用過它了,但可以肯定的是,這絕對是我用過的最強大的調試器,以至於我都不打算在這裏介紹它。對於每個想深入研究Windows操作系統的人,都應該學會使用它。google上有大量的相關信息。

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