我正在努力提高我的 C++ 程序的性能,我发现将内存分配 (mallocs) 转换为对象池会产生很好的结果。 问题在于检测调用 malloc 的位置,因为代码库非常大。我不能使用带有断点的简单 gdb,因为有许多并行运行的定时器和信号处理程序。
在 gdb 中有没有一种方法可以在调用 malloc 时打印整个堆栈跟踪,而不必每次都手动执行。 或者 你能推荐任何其他工具来帮助我做同样的事情吗?
最佳答案
您可以使用 Python 编写 gdb 脚本。
您还可以实现自己的 malloc 函数并与之链接。返回地址将在堆栈上,这将为您提供调用者。
关于C++检测内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38419037/