2013-02-12 628 views
0

我有這甚至包括從外部庫許多內存分配一個C程序,我想通過我的應用程序(庫分配含稅)定期檢查的總分配的內存。如何使valgrind顯示守護進程應用程序的內存狀態?

我嘗試了一些linux命令,如ps euf,pmap $pid,cat /proc/$pid/status但沒有任何實際的結果。

我做了一些研究,我發現了足夠的工具待辦事項是用的valgrind。

我企圖把內存當我的應用程序與運行:

valgrind --tool=drd --trace-alloc=yes 

但我並沒有得到類似結果在執行結束時通過的valgrind顯示結果。

如何讓Valgrind的顯示內存狀態(如通過在Valgrind的執行結束時顯示的結果)我的應用程序運行時?

+3

valgrinds一個強大的工具,他可以做很多事情。如果你的Linux下有distrib,你可以使用** man valgrind **和** read ** :)。 htop會在虛擬和物理上向您顯示您的總內存使用情況。 – SeedmanJ 2013-02-12 09:43:35

+0

如何使valgrind定期顯示內存狀態,而不是在執行結束時顯示內存狀態,因爲應用程序是守護進程。 – developer 2013-02-12 09:59:50

+0

您也可以查閱您的平臺的文檔以查看'malloc'是否提供任何支持。例如,在GCC上,你有''這給你幾個診斷工具。 – 2013-02-12 10:07:41

回答

1

按照3.8.0 valgrind manual,有一個核心或MEMCHECK沒有這樣的選擇,並且在信號部件定期或觸發的行爲沒有提及。 valgrind不能開箱即用。

雖然你可能會寫一個Valgrind的工具來完成這項工作,你可能會重新考慮的辦法,明確你想要什麼樣的內存使用量,並在系統的統計數據可能足以爲你的任務。

+0

我看到手冊頁的選項'的valgrind --trace-ALLOC = yes',它是有用的,但使用此選項我在執行中得到一個錯誤'valgrind:錯誤的選項:--trace-alloc = yes' – developer 2013-02-12 10:10:32

+0

@alk:不,它只是一個DRD工具特定的選項,而且他正在運行默認工具(memcheck)。 – thiton 2013-02-12 10:49:02