如何在Linux上的C程序中使用malloc_stats

如何在Linux上的C程序中使用malloc_stats,linux,memory,c,gdb,Linux,Memory,C,Gdb,我试图通过在Linux上运行的C程序中调用malloc_stats()来打印内存分配统计数据。但是,它不提供任何输出。根据malloc_stats()的手册页,信息被发送到标准错误。那么,如何将malloc_stats()信息重定向到程序的日志文件中呢 我还尝试在gdb中调用malloc_stats(),但这也不能提供正确的信息: (gdb) call malloc_stats() [Switching to Thread 182928084768 (LWP 11950)] $2 = -1759

我试图通过在Linux上运行的C程序中调用malloc_stats()来打印内存分配统计数据。但是,它不提供任何输出。根据malloc_stats()的手册页,信息被发送到标准错误。那么,如何将malloc_stats()信息重定向到程序的日志文件中呢

我还尝试在gdb中调用malloc_stats(),但这也不能提供正确的信息:

(gdb) call malloc_stats()
[Switching to Thread 182928084768 (LWP 11950)]
$2 = -1759135936
(gdb)

我的gdb有什么问题?

如果你想在其他地方使用,你不能更改
malloc_stats
输出的位置,你需要自己重定向
stderr
(例如使用
freopen

如果您有一个足够新的glibc(>=2.10),那么可以使用它将
文件*
作为其参数之一(并输出XML)。将其与内存缓冲区相结合,就可以得到它

(我不知道你的
gdb
有什么问题,我的打印数据很好-gdb7.3.1,glibc7.15。)