将 valgrind 与守护程序附加,并收集每个守护程序调用的日志
Attach valgrind with daemon and collect logs for each daemon call
我有一个完全用 C++ 编写的客户端服务器系统。 服务器以/etc/init.d/serverd
运行,具有启动/停止选项。 Client.exe
执行任何命令,如client.exe --options
。每次客户端调用时,守护程序都会命中。我想用/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 ]
将valgrind
与守护进程附加,以便每次执行client.exe --options
时,都应该为守护进程生成日志--log-file=valgrind_1.log
有没有人知道如何做同样的事情?
似乎不可能将 valgrind 附加到现有进程:http://valgrind.org/docs/manual/faq.html#faq.attach
在我看来,最佳做法是杀死守护进程,并在 valgrind 中自行运行可执行文件。
对于 systemd 托管守护进程,您可以更改运行 valgrind ExecStart=
,如下所示:
ExecStart={valgrind-command-with-flags}/usr/sbin/foo-daemon
请确保将输出重定向到明确定义的位置。
注意 :使用 valgrind 运行的守护进程可能非常慢,并且可能无法按预期运行
- C# DLL 从C++应用程序调用 SOAP Web 服务
- 从C++程序调用 git 克隆
- 使用另一个程序调用正在运行的 C++ 程序中的函数
- C++控制台应用程序调用C++/CLI静态库
- 从 C# Windows 应用程序调用 C dll 会导致 svchost.exe 崩溃
- LoadLibray FileNotFound 取决于哪个应用程序调用
- 为什么无法在 Cocoa 应用程序调用的 C++ func 中嵌入自定义 Python 模块
- 使用模拟器C++从RISC-V裸机程序调用printf系统调用时失败
- C++程序调用 C 函数 在 g++ 链接期间获取未定义的引用
- 使用 gtest 和 gmock 验证程序调用
- 从守护程序启动的控制台应用捕获输出
- 使用 gdb 调试 linux 守护程序的初始启动
- 从 Qt 小部件应用程序调用 pyqt widget
- 如何使用Mono / C#程序调用Linux / C ++函数?
- 是否可以通过另一个程序调用程序
- 从应用程序调用静态库时,QT创建者什么都不会发生
- 如何知道库的哪些功能是由程序调用的
- OpenCV 函数在由C++线程程序调用的 Python 脚本本身调用时锁定
- numpy.core.multiarray在通过Xcode中开发的C 应用程序调用Python模块时未能导入
- 将 valgrind 与守护程序附加,并收集每个守护程序调用的日志