2014-11-06 58 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