0

我有一个基于此守护程序示例http://www.itp.uzh.ch/~dpotter/howto/daemonize的代码的 Linux 守护程序(我使用单个 fork 使其成为守护程序)的 C++ 应用程序。我正在尝试使用 valgrind 查找内存泄漏:

/usr/bin/valgrind.bin --suppressions=/usr/lib/valgrind/debian-libc6-dbg.supp --tool=memcheck --child-silent-after-fork=no --trace-children=yes --leak-check=full --show-reachable=yes /usr/sbin/<my daemon>

但是 valgrind 在初始进程终止后立即退出,而应用程序仍在子进程中工作。如果我注释掉退出初始进程的代码,那么 valgrind 将继续工作。但这不是一个干净的解决方案。没有它,我如何让 valgrind 继续工作?

4

1 回答 1

0

Valgrind 的常见问题解答特别指出它不能附加到已经运行的进程。我想他们所有的仪器设置在 fork() 上也丢失了。
他们确实提到了一个听起来非常复杂的解决方法(在这里),但我认为它会增加更多不需要的复杂性,而不仅仅是不进行守护进程。

于 2012-06-20T09:36:03.703 回答