namazu-dev(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: memory leak on libnmz
Satoru Takabayashi <satoru-t@xxxxxxxxxxxxxxxxxx> wrote:
># src/.libs で namazu コマンドを実行して実験したのだけど、方
># 法はこれで正しいのだろうか?
これ、なんとなく変だなと思っていたら src/.libs ディレクトリ
の namazu コマンドは /usr/local/lib/libnmz.so.0 をリンクして
いるようです。
% ldd namazu
libdl.so.1 => /lib/libdl.so.1 (0x4000c000)
libnmz.so.0 => /usr/local/lib/libnmz.so.0 (0x4000f000)
libm.so.5 => /lib/libm.so.5 (0x40032000)
libc.so.5 => /lib/libc.so.5 (0x4003b000)
つまり、一度 make install して /usr/local/lib/libnmz.so.0 を
インストールし直さないと nmz/*.c を修正したコードは実行結果
に反映されないみたい。これは不便です。
そこで、 src にあるシェルスクリプトの namazu コマンド
(libnmz を shared library としてリンクするため) を実行すると、
src/.libs に lt-namazu という実行ファイルが作成されます。こ
ちらの方は nmz/.libs/libnmz.so.0 をリンクしています。
% ldd ./lt-namazu
libdl.so.1 => /lib/libdl.so.1 (0x4000c000)
libnmz.so.0 => /home/satoru/cvs/namazu/nmz/.libs/libnmz.so.0 (0x4000f000)
libm.so.5 => /lib/libm.so.5 (0x40032000)
libc.so.5 => /lib/libc.so.5 (0x4003b000)
というわけで、 ccmalloc を使ってデバッグするときは次の手順に
従えばいいようです。
1. src ディレクトリの namazu を 1回だけ実行する
2. src/.libs ディレクトリの lt-namazu を実行してテストする
ちなみに、 src ディレクトリにあるシェルスクリプトの namazu
コマンドを実行すると、 ccmalloc は次のような警告を出します。
symbol が取得できないため出力は情報の少ないものになります。
trying to find executable in current directory ...
Could not find an executable with valid symbols
Specify it with the `file' command
in the startup file `~/.ccmalloc'
or link `a.out' to this executable!
p.s.
Red Hat 6.1 の環境で autogen.sh && make したら libnmz.so を
作りませんでした。なぜだろう??
-- Satoru Takabayashi