如何使用valgrind定位服务器程序的内存泄露?

nkinuyasha 2014-02-15 07:20:29
有一个C++程序是常驻进程
如果通过valgrind讲程序拉起来以后,怎么退出这个进程来触发内存泄露检测啊

我通过kill -15不行
...全文
327 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
后坡 2014-03-28
  • 打赏
  • 举报
回复
可以在你的程序中注册信号处理函数 比如注册SIGTERM信号处理函数 //信号处理函数 void dosignal(int sig) { is_runing = false; } int main() { while(is_runing) { do XX } return } 可以执行kill -s SIGTERM pid 让进程主动退出。 当然也可以在信号处理函数中直接exit退出,看你情况 (我用的是linux,windows应该也有类似的机制)
jiandingzhe 2014-02-17
  • 打赏
  • 举报
回复
咩?没debug过这类程序。会有任何不同吗? 另外我都是运行的时候就带着valgrind跑啊。
赵4老师 2014-02-17
  • 打赏
  • 举报
回复
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!

64,666

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧