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)which をFILE*パラメーターの 1 つとして使用できます (そして XML を出力します)。それを組み合わせるとopen_memstream(3)、メモリバッファでそれを取得できます。

(私はあなたの何が問題なのかわかりません.私のものgdbは統計をうまく出力します-GDB 7.3.1、glibc 7.15。)

于 2012-11-07T19:11:50.573 に答える