我有一套每晚都要進行的驗收測試。我想使用valgrind自動檢查代碼中的內存泄漏,作爲手動檢查泄漏的附加安全防護措施。更新我的腳本以在valgrind下運行我的進程是微不足道的,但是,每個測試都會啓動並停止大量進程,並且大約有15000個測試用例,因此最終會生成數千個單獨的報告。如何合併同一進程的多次運行的Valgrind memcheck報告?
有沒有能夠合併這些報告的工具?我見過武神,但根據文檔,他們不支持valgrind 3.5
我有一套每晚都要進行的驗收測試。我想使用valgrind自動檢查代碼中的內存泄漏,作爲手動檢查泄漏的附加安全防護措施。更新我的腳本以在valgrind下運行我的進程是微不足道的,但是,每個測試都會啓動並停止大量進程,並且大約有15000個測試用例,因此最終會生成數千個單獨的報告。如何合併同一進程的多次運行的Valgrind memcheck報告?
有沒有能夠合併這些報告的工具?我見過武神,但根據文檔,他們不支持valgrind 3.5
如果你的代碼大部分是乾淨的,那麼你可以保留錯誤情況。
如果你正確地使用一個工具來組合輸出,那麼valgrind xml輸出格式可能是正確的選擇。至少解析不應該太難。您還可以將valgrind日誌輸出到不同的文件,以將其與程序的輸出分離。當你使用--error-exitcode=
檢測到內存泄漏時,你也可以讓valgrind發出一個錯誤。
比較泄漏時,您仍然需要決定什麼是相同的內存泄漏。
鑑於可能有成千上萬的報告產生只是發現錯誤的情況下可能很難。會有很多錯誤情況,以及我知道那裏有很少的泄漏。還會有很多重複的東西,我希望任何合併工具都可以合併爲一份主報告。 – Glen 2010-06-25 16:17:11
因此,我的「如果你的代碼大多是乾淨的」聲明。在任何情況下合併都會非常棘手,因爲在比較時必須確定追蹤的重要程度。 – 2010-06-25 16:32:08
解決問題的一種方法應該是添加--gen-suppressions=all
選項,並在您的suppressions files中連接所有被忽略的錯誤。您必須手動排序真正的泄漏和錯誤的泄漏,但一旦完成,valgrind將只打印真正的泄漏。
然後,如果報告寫了任何東西,也許你必須在繼續之前解決內存泄漏。
--quiet
選項是必需的:默默運行,只打印錯誤信息。如果你正在運行迴歸測試或者有其他一些自動化測試機器,這很有用
Valkyrie(Valgrind的GUI伴侶)的更新版本有你正在尋找的東西。
$ man valkyrie
NAME
valkyrie - graphical front-end to the Valgrind suite of tools for debugging and profiling Linux executables
SYNOPSIS
valkyrie [valkyrie-opts] [valgrind-opts] [prog-and-args]
<snip>
--merge <loglist>
Merge multiple logfiles, discarding duplicate errors
還有一種CLI變體,稱爲vk_logmerge
。如果你在Ubuntu上,它可以在valkyrie
包中找到。
同樣的問題。現在的結論:寫一個腳本:)我感興趣,如果你發現這樣一個工具... – neuro 2010-06-25 08:37:59