我试图通过在我的C程序中调用malloc_stats()来打印内存分配统计信息,该程序在Linux上运行。但是它不提供任何输出。根据malloc_stats()的联机帮助页,信息被发送到标准错误。那么如何将malloc_stats()信息重定向到我的程序的日志文件?
我也尝试在gdb中调用malloc_stats(),但是它没有给我正确的信息:
(gdb) call malloc_stats()
[Switching to Thread 182928084768 (LWP 11950)]
$2 = -1759135936
(gdb)
我的gdb有什么问题?
答案 0 :(得分:2)
您无法更改malloc_stats
输出的位置,您需要自己重定向stderr
(例如,使用freopen
),如果您想要其他地方。
如果你有一个最近足够的glibc(> = 2.10),你可以使用malloc_info(3)
,它将FILE*
作为其参数之一(并输出XML)。将其与open_memstream(3)
结合使用,就可以在内存缓冲区中获得它。
(我不知道你的gdb
有什么问题,我的打印统计数据很好--GDB 7.3.1,glibc 7.15。)