測試工具整理(2)——動態檢查

valgrind(找到約 992,000 條結果)

Valgrind是一個GPL的軟件,用於Linux(For x86, amd64 and ppc32)程序的內存調試和代碼剖析。你可以在它的環境中運行你的程序來監視內存的使用情況,比如C 語言中的malloc和free或者 C++中的new和 delete。使用Valgrind的工具包,你可以自動的檢測許多內存管理和線程的bug,避免花費太多的時間在bug尋找上,使得你的程序更加穩固。

 

gprof(找到約 332,000 條結果)

Gprof功能:打印出程序運行中各個函數消耗的時間,可以幫助程序員找出衆多函數中耗時最多的函數。產生程序運行時候的函數調用關係,包括調用次數,可以幫助程序員分析程序的運行流程。
有了函數的調用關係,這會讓開發人員大大提高工作效率,不用費心地去一點點找出程序的運行流程,這對小程序來說可能效果不是很明顯,但對於有幾萬,幾十萬代碼量的工程來說,效率是毋庸置疑的!而且這個功能對於維護舊代碼或者是分析Open Source來說那是相當誘人的,有了調用圖,對程序的運行框架也就有了一個大體瞭解,知道了程序的“骨架“,分析它也就不會再那麼茫然,尤其是對自己不熟悉的代碼和Open Source。
 
gcov(找到約 390,000 條結果)
gcov是gnu/gcc工具庫中的一個組件,一般來說,都會被安裝的可以用whereis gcov來找一下。如果沒有安裝,可以用google來搜一下,關於gcov的安裝的文章。
爲什麼要測試代碼覆蓋率?我是不喜歡在代碼中有跑不到的地方,那只是在白白浪費空間,降低效率。當然了,有些時候,我們可以通過跑代碼覆蓋率來發現我們有什麼異常情況沒有進行測試,畢竟單元測試的用例,不可能一下就想的很全面的。
舉個例子,你的程序在某個函數的入口前處檢測了指針不爲空,你進入調用函數以後又檢測了一回這個指針,並且對爲NULL的情況進行處理,那麼兩處之中必有一處是在浪費空間,當然你的硬盤大,放的下,但是代碼寫的精緻一些,不是更好麼?
發佈了49 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章