C++ 如何在通过应用程序进行分步调试时检查堆分配?
我需要检查程序某个部分的内存消耗。此时,我不关心泄漏,只关心程序何时分配堆中的哪些对象。 我可以将分配追溯到某些方法,但现在我需要放大。 理想情况下,我希望分步调试代码,以达到关键部分,并在以后的每一步中更新已分配的内存和位置 我试着用不同的方式使用valgrind——massif。 我得到的最接近的结果是使用vgdb,在我感兴趣的部分前后强制创建快照,然后在massif visualizer中手动比较这些快照。C++ 如何在通过应用程序进行分步调试时检查堆分配?,c++,linux,debugging,memory-management,profiling,C++,Linux,Debugging,Memory Management,Profiling,我需要检查程序某个部分的内存消耗。此时,我不关心泄漏,只关心程序何时分配堆中的哪些对象。 我可以将分配追溯到某些方法,但现在我需要放大。 理想情况下,我希望分步调试代码,以达到关键部分,并在以后的每一步中更新已分配的内存和位置 我试着用不同的方式使用valgrind——massif。 我得到的最接近的结果是使用vgdb,在我感兴趣的部分前后强制创建快照,然后在massif visualizer中手动比较这些快照。 然而,我似乎无法设置阈值或忽略方法,而这种方法只需要少量的分配(如果您在使用外部工
然而,我似乎无法设置阈值或忽略方法,而这种方法只需要少量的分配(如果您在使用外部工具时遇到问题,还可以在代码中进行粗略的分析 您可以覆盖每个类的静态新运算符。这将允许您记录/打印字体名称、大小等,并执行初始筛选-例如使用1MiB限制。或者,您可以全局覆盖新运算符以捕获所有分配 如果使用标准库容器,自定义分配器也是跟踪的一个选项(如果涉及更多)
一旦分配在您的控制之下,您应该能够在您的关键部分启用/禁用日志记录一次。谢谢,但这将产生与破坏malloc几乎相同的效果。我需要一个更高级别的解决方案,提供一个良好的摘要,如massif等。