3

我试图通过在 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 有什么问题?

4

1 回答 1

2

您无法更改输出的去向,如果您想在其他地方malloc_stats重定向,您需要重定向stderr自己(例如使用)。freopen

如果您有足够新的 glibc (>= 2.10),则可以使用malloc_info(3)将 aFILE*作为其参数之一(并输出 XML)。结合它,open_memstream(3)你可以在内存缓冲区中得到它。

(我不知道你的有什么问题gdb,我的打印统计数据就好了 - GDB 7.3.1,glibc 7.15。)

于 2012-11-07T19:11:50.573 回答