2010-06-24 61 views
3

我有一套每晚都要進行的驗收測試。我想使用valgrind自動檢查代碼中的內存泄漏,作爲手動檢查泄漏的附加安全防護措施。更新我的腳本以在valgrind下運行我的進程是微不足道的,但是,每個測試都會啓動並停止大量進程,並且大約有15000個測試用例,因此最終會生成數千個單獨的報告。如何合併同一進程的多次運行的Valgrind memcheck報告?

有沒有能夠合併這些報告的工具?我見過武神,但根據文檔,他們不支持valgrind 3.5

+0

同樣的問題。現在的結論:寫一個腳本:)我感興趣,如果你發現這樣一個工具... – neuro 2010-06-25 08:37:59

回答

1

如果你的代碼大部分是乾淨的,那麼你可以保留錯誤情況。

如果你正確地使用一個工具來組合輸出,那麼valgrind xml輸出格式可能是正確的選擇。至少解析不應該太難。您還可以將valgrind日誌輸出到不同的文件,以將其與程序的輸出分離。當你使用--error-exitcode=檢測到內存泄漏時,你也可以讓valgrind發出一個錯誤。

比較泄漏時,您仍然需要決定什麼是相同的內存泄漏。

+0

鑑於可能有成千上萬的報告產生只是發現錯誤的情況下可能很難。會有很多錯誤情況,以及我知道那裏有很少的泄漏。還會有很多重複的東西,我希望任何合併工具都可以合併爲一份主報告。 – Glen 2010-06-25 16:17:11

+0

因此,我的「如果你的代碼大多是乾淨的」聲明。在任何情況下合併都會非常棘手,因爲在比較時必須確定追蹤的重要程度。 – 2010-06-25 16:32:08

0

解決問題的一種方法應該是添加--gen-suppressions=all選項,並在您的suppressions files中連接所有被忽略的錯誤。您必須手動排序真正的泄漏和錯誤的泄漏,但一旦完成,valgrind將只打印真正的泄漏。

然後,如果報告寫了任何東西,也許你必須在繼續之前解決內存泄漏。

--quiet選項是必需的:默默運行,只打印錯誤信息。如果你正在運行迴歸測試或者有其他一些自動化測試機器,這很有用

0

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包中找到。