2010-09-15 39 views
0

我想調試一個「大」的C代碼,並使用valgrind,特別是工具memcheck。由於程序的大小,輸出很長,我只想關注程序的某些功能和相關子功能。 valgrind只能分析某些功能和子功能(達到某種深度級別)嗎?用valgrind分析一些函數和子函數

謝謝

+0

什麼Valgrind工具是否在使用? MEMCHECK? Callgrind? – 2010-09-15 13:10:03

+0

memcheck,對不起 – flow 2010-09-15 13:13:41

回答

1

Valgrind必須監督從一開始的過程;它不可能附加到已經運行的進程上(或者,等同於在執行過程中忽略該進程,然後開始模擬/檢查)。

反過來不對 - 你可以在一些指令後「分離」valgrind;但我猜這不是你想要的。

請注意:

  • 「輸出很長」是個可憐的藉口 - Valgrind的錯誤通常是 真陽性(除非您使用優化的代碼,在這種情況下:不做那個),並應該被解決,
  • 可以集中於解決使用未初始化的值,之前的更嚴重的問題(堆損壞)通過使用--undef-value-errors=no
+0

我秒輸出不應該很長。實際上,即使使用優化的代碼,我也記不起任何誤報。不優化也可以隱藏一些錯誤(尤其是缺少返回語句),所以測試*都是很重要的。 – 2013-06-12 13:26:13