2009-11-29 61 views
1

我不認爲有一種方法可以用callgrind以編程方式啓用/禁用Valgrind memcheck嗎? (開始/停止檢測)。Valgrind memcheck編程啓用

這是痛苦的,unusably慢(這是好的,如果你要測試的代碼會自動啓動,你只要把它運行),但我實際上並不能進入,如果沒有點擊該應用程序的幾個按鈕很重要的代碼,這是完全沒有反應。 (我的代碼是一個插件到另一個應用程序)

感謝

回答

3

這是原則上漂亮幾乎是不可能的。如果valgrind不知道你所有記憶的完整歷史,那麼它怎麼可能知道有什麼是泄漏,甚至是對無效記憶的引用?

2

您不能停止/啓動檢測,但可以通過編程方式執行增量檢漏。請參閱http://valgrind.org/docs/manual/mc-manual.html#mc-manual.clientreqs,特別是VALGRIND_DO_LEAK_CHECK,VALGRIND_DO_ADDED_LEAK_CHECK和VALGRIND_DO_CHANGED_LEAK_CHECK。

+0

此外''VALGRIND_DISABLE_ERROR_REPORTING'和'VALGRIND_ENABLE_ERROR_REPORTING'客戶端請求,這對於過濾您熟悉的東西非常方便,並不是很有意思。如果您對長時間運行的應用中的緩慢泄漏感興趣,則可以啓動,禁用報告,執行初始泄漏檢查,重新啓用報告以及執行增量泄漏檢查以查看報告的內容。特別有用的,如果你正在進行'可達性'檢查。 – 2018-02-19 07:19:45