軟體除錯系列之初識除錯之劍 Windbg

2021-06-04 20:16:58 字數 1123 閱讀 1085

當測試人員向開發人員反饋問題時,是否經常聽到這麼一句:「我的電腦上沒有問題」,這在新手口中,更容易聽到。

但是為什麼他們會這麼說呢,究其原因,可能是因為測試人員的電腦上出現的bug

讓他束手無措,無計可施,所以只能搬出「我的電腦沒問題」這一說辭來推諉,以證明自己的軟體沒有問題。

為了避免這種情況,我們需要從兩方面著手,

1:在測試人員發現問題時能更有效地儲存軟體出錯時的現場環境或軟體狀態。

第一方面比較好解決,一般的軟體公司都有一套比較完善的bug

提交機制,因此在發現

bug時,可要求測試人員在發現

bug(dump檔案)

提交至bug

庫進行離線除錯。

第二方面則需要開發人員掌握一款輕量級即方便安裝的除錯工具windbg,這樣才方便在測試人員的電腦上安裝除錯,

相比visual studio 

(dump檔案)

,dump

檔案記錄了軟體出錯時記憶體狀態,通過分析該檔案,我們可以檢視程序當時的各執行緒的呼叫棧,各呼叫函式的引數,區域性變數,全域性變數,堆資訊,記憶體值,臨界區,事件,互斥體,控制代碼等資訊,通過這些資訊,可以幫助我們能有效地分析記憶體洩露,死鎖,軟體崩潰,資源洩漏等軟體

bug。除錯dump檔案這點尤其有用,因為dump檔案是我們能從使用者電腦上獲取bug出錯時的軟體資訊的唯一可供我們除錯的資料。

windbg支援命令列模式,也支援圖形介面操作,介面操作及快捷鍵與

visual studio

很相似,熟悉

visual studio

的朋友可以很快上手,像我這種命令列控的人,更喜歡它的命令列模式。

那麼,以下是windbg

的執行介面,看看它長咋樣的:

再來簡單介紹一下它的常用命令:

檢視stack

:kb, kp, kp 

檢視變數:dv

搜尋記憶體:s

搜尋符號: x

檢視記憶體:dd,da,db 

分析死鎖:!cs, !lock 

自動分析:!analyze 

載入dll: .load, .reload 

顯示載入的模組資訊: lm, lmvm

關於windbg

的具體使用方法請聽下回分解。

js除錯系列 初識控制台

寫在最開頭 其實我以前就在考慮要不要寫這個東西,因為這個東西確實不難,但是為什麼會有這麼多人問,他們問的不是怎麼用控制台,而是不知道控制台能幹嘛,他們也知道有 console.log 之類的東西,但他們不知道為什麼要用這麼長的字串代替 alert 輸出資訊。在他們眼裡 alert 足以。好吧,我承認...

Redis系列之初識入門

redis,乙個完全免費開源的快取軟體,它是使用c語言編寫,基於記憶體的高效能key value資料庫。redis在網際網路儲存技術中得到非常廣泛的應用,它作為快取中介軟體,能夠解決網際網路應用中的一些技術瓶頸,且具有使用簡單,效能強悍,功能應用場景豐富的特點。redis與memcache mong...

軟體除錯修煉之道系列隨筆

除錯對於軟體開發至關重要,然而除錯並非是件容易事,paul butcher的這本 軟體除錯修煉之道 是一部非常優秀的軟體除錯實戰指南,很多人光看標題,以為這本書只是在講blackbox whitebox testing,unit testing,regression testing,etc.其實,作...