如何对守护程序进行内存检查?

Alw*_*oss 8 c++ valgrind memory-leaks memory-management memory-leak-detector

我编写了一个C++应用程序,它一直运行直到手动终止.它监视其他重要应用程序.因此,我的守护进程应用程序不应该关闭.记住这一点,我想看看我的应用程序中是否有任何内存泄漏.我使用了valgrind,但由于这个应用程序一直在运行,因此valgrind不会退出.如果我做一个控件 - C然后我没有从valgrind日志文件中获得完整的信息.

有没有一种工具可以做Valgrind的工作?

Use*_*ess 5

我相信你可以将gdb连接到正在运行的valgrind进程,并指示它明确地运行泄漏检查.

我没试过这个,只是在文档中看到过.

在链接断裂的情况下:

将GDB连接到Valgrind gdbserver

$ valgrind --tool=memcheck --vgdb=yes --vgdb-error=0 ./prog
Run Code Online (Sandbox Code Playgroud)

(error参数是gdbserver变为活动之前的错误数:零表示它立即开始运行).

然后在程序上启动gdb并连接到远程目标

$ gdb ./prog
(gdb) target remote | vgdb
Run Code Online (Sandbox Code Playgroud)

并触发检查

(gdb) monitor leak_check full reachable any
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅您的文档或链接的文档.