2012-11-07 46 views
2

我試圖通過在Linux上運行的C程序中調用malloc_stats()來打印內存分配統計信息。但它不提供任何輸出。根據malloc_stats()的手冊頁,信息被髮送到標準錯誤。那麼,如何將malloc_stats()信息重定向到我的程序的日誌文件?如何在Linux上的C程序中使用malloc_stats

我也打過電話malloc_stats()在gdb但是這並沒有給我正確的信息之一:

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

什麼是錯我的GDB?

回答

2

您不能更改其中malloc_stats輸出的話,你就需要自己重定向stderr(例如使用freopen),如果你想要的其他地方。

如果你有一個最近足夠的glibc(> = 2.10),可以使用malloc_info(3),它將FILE*作爲其參數之一(並輸出XML)。把它和open_memstream(3)結合起來,你就可以將它存入內存緩衝區。

(我不知道你的gdb有什麼問題,我的打印數據很好--GDB 7.3.1,glibc 7.15。)

相關問題