我正在开发一个多线程应用程序,它似乎在运行期间分配了大量内存。所有内存在执行结束时都会被释放,因此valgrind不会显示内存泄漏。我试图使用massif工具来找出发生了什么,但ms_print似乎只显示了关于主线程的信息。然而,我相信大部分内存都是在子线程中分配的。有没有可能让massif显示关于它们的信息?
发布于 2012-10-11 13:23:52
对我来说(Ubuntu 12.04),这似乎是默认的。与您的应用程序一样,我的主线程不会做很多事情(除了处理基于gtk的UI),所有的(取消)分配都是在子线程中完成的。
我最初确实遇到了一些困难,因为我正在分析一个基于自动工具的项目,并且在我的第一次尝试中,我分析的是由libtool生成的shell脚本,而不是我的应用程序。
发布于 2017-05-28 18:51:18
您可以设置--trace-children=yes [default:no]
启用时,Valgrind将跟踪通过exec系统调用启动的子进程。这对于多进程程序是必要的。
massif manual
https://stackoverflow.com/questions/12320533
复制相似问题