2014-11-06 36 views
3

我有一個客戶端服務器系統,完全用C++編寫。服務器以/etc/init.d/serverd的運行方式啓動/停止選項。 Client.exe執行任何命令client.exe --options。每次客戶端調用時,守護進程都會打開。 我想附上valgrind/etc/init.d/serverd來檢測泄漏。 我嘗試了下面的選項,但失敗了。將valgrind與守護進程綁定並收集每個守護進程調用的日誌

/usr/local/bin/valgrind --log-file=valgrind_1.log -v --trace-children=yes --leak-check=full --tool=memcheck --vgdb=yes --vgdb-error=0 /etc/init.d/ serverd start 

每次都無法附加守護進程。

我們需要的是在開始時[ the exact point is , I will stop daemon , attach valgrind with it and then start it again ]所以每一次的client.exe --options執行附加valgrind與守護,應該守護程序生成--log-file=valgrind_1.log

日誌有沒有人有關於如何做任何想法相同?

+0

運行scrip對於'serverd'看起來如何? – Surt 2014-11-06 12:59:04

回答

1

這似乎不可能的valgrind附加到現有的流程: http://valgrind.org/docs/manual/faq.html#faq.attach

在我看來,最好的做法是殺守護進程,並通過自己的運行Valgrind的可執行文件。

+0

我做了同樣的事情,但無法正確連接'valgrind'和守護進程。在守護進程開始之前有初始日誌,但在此之後,由'client.exe'命中的每個守護進程的日誌,日誌文件中沒有日誌,由選項'--log-file = valgrind_1.log'給出。這意味着守護進程正在運行並正常工作,但valgrind無法生成日誌並且無法分析守護進程的內存泄漏。 – 2014-11-07 06:02:06

+0

所以我不知道答案..我允許自己幼稚的評論:1.你確定valgrind在這種情況下運行? 'ps -e | grep valgrind'應該表明這一點。 2.你確定你在正確的地方搜索日誌嗎?也許在絕對文件中定義它更安全。 – FabienRohrer 2014-11-07 07:26:33