2012-10-18 17 views
6

我在一個程序上運行valgrind memcheck,該程序會產生數千個其他線程。如何防止Valgrind爲每個新線程啓動嵌入式gdb服務器?

其他線程不會產生錯誤,我不在乎他們會發生什麼。

但是,Valgrind堅持在每次新線程產生時在/ tmp中打開一個命名管道。這不僅是浪費,它實際上打破了valgrind。有時valgrind不會自行清理,然後具有相同pid(稍後激活)的未來孩子無法產卵,因爲valgrind無法使用正確的名稱(它已存在)創建管道。

我該如何防止Valgrind製造所有這些管道!?!

編輯: 旗我已經嘗試:

--child-無聲後叉= YES

,事情我已經排除了:

--track兒=否(默認值是否)。

+4

'有時候valgrind不會自行清理' - LOL! +1只是爲了:) –

+2

請發佈您嘗試過的valgrind memcheck選項。 – nalply

+2

如果它打破了valgrind,那麼你可以在valgrind中運行valgrind,所以你可以使用valgrind valgrind valgrind ... yo dawg。 – Griwes

回答

3

對不起回答我自己的問題。僅用於文檔目的。

旗運行:

--vgdb=no 

這是不正確記錄在手冊頁,因爲它不會告訴你,它會到處噴出管道沒有標誌,但是這就是爲什麼它做它。

+0

你可以回答你自己的問題。這是鼓勵練習。不用道歉。 – nalply

+0

你是怎麼發現的? – nalply

+0

大量的護目鏡+試驗和錯誤。 valgrind郵件列表有類似的問題。看起來MMAP有時可能會失敗。請參閱:http://sourceforge.net/mailarchive/forum.php?thread_name=4F09B6E3.4080107%40bitwagon.com&forum_name=valgrind-users –

1

如果可以,請調整您的初始程序,以便可以使用命令行參數關閉線程產生。對結果運行valgrind,並移除線程產生。

+0

一個明智的想法,但不幸的是,就我而言,如果沒有線程,程序不會做任何事情。 –

相關問題