【发布时间】:2012-06-20 07:28:01
【问题描述】:
我有一个基于此守护程序示例 http://www.itp.uzh.ch/~dpotter/howto/daemonize 的代码的 C++ 应用程序,它是一个 Linux 守护程序(我使用单个 fork 使其成为守护程序)。我正在尝试使用 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 继续工作?
【问题讨论】:
-
许多守护进程类型的程序都有命令行选项来告诉它是否应该“守护进程”。也许你可以做类似的事情,即让它默认守护,但有标志告诉它不要?
-
我不想为 valgrind 创建特殊的应用程序配置,而是想按原样调试应用程序。但如果这是唯一的方法,那么我会这样做
-
你为什么使用 /usr/bin/vagrind.bin? - /usr/bin/valgrind 是一个包装脚本并设置一些环境变量。