應用運行時診斷工具,Valgrind 3.7.0 發布
Valgrind是一個運行時診斷工具,它可以監視 一個指定程序的活動并通知你在你的代碼中可能存在的各種各樣的內存管理問題。它類似于老式的Electric Fence工具(該工具將標準的內存分配函數替換為自己的函數以提高診斷能力),但被認為更容易使用并且在多個方面都提供了更豐富的功能——而且現在大多 數主流Linux發行版都提供了該工具,所以在你的系統中使用它不需要花費太多時間,你只需安裝它的軟件包即可。
Valgrind 3.7.0 發布,該版本增加對 ARM/Android, S390X/Linux, and Mac OS X 10.7 (Lion) 系統的支持;增加了一個 GDB 服務器,可通過 GDB 直接對應用進行控制;性能和功能上都有改進,涉及 Helgrind、DRD、Memcheck 和 exp-Sgcheck.
一個典型的Valgrind運行可能如下所示:
輸出顯示有80個字節的內存在程序結束時丟失了。通過指定leak-check選項,我們可以找到這個泄漏的內存來自哪里:
你應該養成習慣在可能的情況下使用諸如 Valgrind這樣的工具來對發現和修復內存泄漏以及其他編程錯誤的過程進行自動化。因為這里只對Valgrind進行了膚淺的介紹,所以你需要查看它 的在線文檔以更全面的了解其功能。事實上,越來越多的開放源碼項目都依賴于Valgrind作為其回歸測試(任何一個具有相當規模的軟件項目的一個重要組 成部分)的一部分。
自動化代碼分析
有越來越多的第三方工具可以用于執行自動化代碼分 析,尋找軟件中各種典型類型的缺陷。這類代碼覆蓋工具一般提供靜態、動態或混合形式的代碼分析。這意味著工具可能只是檢查源代碼以確定潛在的缺陷,或它可 能試圖鉤入其他一些進程,以獲取確定軟件中缺陷可能存在位置所必需的數據。
基于斯坦福大學的checker的商業代碼分析工具 Coverity經常被用在Linux系統中。它鉤入編譯過程并提取大量有用的信息,這些信息可用于發現很多潛在的問題。事實上,Coverity為越來 越多的開放源碼項目提供免費代碼分析。它甚至還發現了Linux內核中相當多的以前未被發現的錯誤。這些問題被發現后立即得到了解決。
靜 態代碼分析的一個比較有趣的用途是查找源代碼中是否有非法使用GPL代碼的情況。Blackduck軟件就提供了這樣一個工具,它可以幫助你掃描你的大型 軟件項目,以查找借用自開放源碼項目的源代碼,并確定處理方法。這對兼容性測試以及其他的你的法律團隊可能會提醒你進行的活動將非常有用。