使用守护程序附加valgrind并为每个守护程序调用收集日志

时间:2014-11-06 11:59:18

标签: c++ linux valgrind daemon memory-leak-detector

我有一个完全用c ++编写的客户端服务器系统。服务器以/etc/init.d/serverd运行,带有启动/停止选项。 Client.exe执行任何命令client.exe --options。每次客户端调用,守护进程都会命中。 我想将valgrind附加/etc/init.d/serverd来检测泄漏。 我尝试了以下选项,但失败了。

/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

每次都无法附加守护进程。

我们想要的是在开始时将valgrind与守护进程连接在一起 [ the exact point is , I will stop daemon , attach valgrind with it and then start it again ],以便每次执行client.exe --options时都应为守护进程生成日志在--log-file=valgrind_1.log

有没有人知道如何做同样的事情?

2 个答案:

答案 0 :(得分:1)

似乎无法将valgrind附加到现有进程: http://valgrind.org/docs/manual/faq.html#faq.attach

在我看来,最好的做法是杀死守护进程,并自己运行valgrind中的可执行文件。

答案 1 :(得分:0)

对于systemd托管守护程序,您可以更改ExecStart=来运行valgrind,如下所示:

  

ExecStart = {带有标记的valgrind-command-}} / usr / sbin / foo-daemon

请确保将输出重定向到定义明确的位置。

警告 :使用valgrind运行的守护进程可能非常慢,并且可能无法按预期运行