C++检测内存分配

标签 c++ gdb gprof

我正在努力提高我的 C++ 程序的性能,我发现将内存分配 (mallocs) 转换为对象池会产生很好的结果。 问题在于检测调用 malloc 的位置,因为代码库非常大。我不能使用带有断点的简单 gdb,因为有许多并行运行的定时器和信号处理程序。

在 gdb 中有没有一种方法可以在调用 malloc 时打印整个堆栈跟踪,而不必每次都手动执行。 或者 你能推荐任何其他工具来帮助我做同样的事情吗?

最佳答案

您可以使用 Python 编写 gdb 脚本。

您还可以实现自己的 malloc 函数并与之链接。返回地址将在堆栈上,这将为您提供调用者。

关于C++检测内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38419037/

相关文章:

将多个 gprof 结果文件组合成一个文件

c++ - 在 CMake 项目中包含 libsimdpp

c++ - 大括号之间的自定义类型初始化数组

c - gdb "info frame"中没有 epb/eip 寄存器

c++ - 使用 gprof 显示模板化方法调用图的参数格式?

profiling - gprof 搞砸了

c++ - 如果我在指向 vector 空元素的迭代器上调用方法,会发生什么?

c++ - OpenGL 的子窗口不响应 gluOrtho2D()

Windows 强制执行 READ-ONLY .text 部分,即使被 ld 链接器禁用

c - 使用GDB在C中查找局部变量的地址