使用 Linux/GCC/C++,每当调用 malloc/free/new/delete 时,我想向 stderr 记录一些内容。我试图了解库的内存分配,因此我想在运行单元测试时生成此输出。我使用 valgrind 进行内存泄漏检测,但我找不到使其仅记录分配的选项。
有任何想法吗?我正在寻找最简单的解决方案。重新编译库不是一个选项。
您可以使用 ltrace 跟踪对 malloc/free 的调用:
#include <stdlib.h>
int main (void)
{
void *ptr = malloc(10);
free(ptr);
return 0;
}
$ g++ test.cpp -o test
$ ltrace -e malloc,free ./test
malloc(10) = 0x804a008
free(0x804a008) = <void>
+++ exited (status 0) +++
要跟踪新的/删除的调用而不重新编译,您可能需要使用类似 LD_PRELOAD 的东西来用您自己的版本覆盖调用,这正是泄漏追踪器 http://www.andreasen.org/LeakTracer/这可能会做你想做的事。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)