2008-11-19 81 views
21

我有一個流程x,我想檢查與valgrind泄漏。問題是xy運行,而y又由z運行。我不能運行x獨立的,因爲yz設置爲x環境,如環境變量,命令行開關,通過x如何告訴valgrind memcheck分叉進程?

  1. 所需的文件,有什麼辦法,我可以告訴valgrindz運行但要遵循它發現並報告它們的任何分叉?
  2. 有什麼辦法可以告訴valgrind遵循任何分叉,但只報告名爲x的進程?
  3. 有什麼辦法可以告訴valgrind附加到已經運行的進程,我可以用gdb做什麼?

我不知道這是否重要,但我在SuSE64 linux和valgrind-2.4.0下運行。

謝謝!

回答

28
  1. 當給定--trace-children=yes選項時,Valgrind遵循分叉進程。
  2. 您應該可以通過使用合適的過濾器來實現此目的。
  3. 編號Valgrind使用LD_PRELOAD掛載到模塊加載代碼中,因此無法附加到正在運行的進程。
+6

Valgrind *使用*來使用LD_PRELOAD,但在當前版本中不這樣做。您對3的回答仍然正確,但原因與LD_PRELOAD無關。 – 2009-01-17 06:36:49