galloc - Gachapin alloc というのを作りました
をみて自分も試してみたくなったので書きました。
malloc(3)するとガチャピンが、free(3)するとムックがSTDERRに報告してくれます。便利!!1
$ make galloc.so $ LD_PRELOAD=./galloc.so ls # or arbitrary command Gachapin .oO(malloc(568) = 0x172e040) Gachapin .oO(malloc(120) = 0x172e280) Mukku .oO(free = 0x172e040) Gachapin .oO(malloc(6) = 0x172e040) Mukku .oO(free = 0x172e040) ...
_init()は共有ライブラリが読まれると自動で実行されるそうなのですが、mallocの置き換えではうまくいかなかった(SEGV)んで初期化チェック&初期化関数の実行するようにしてます。
なお、mallocまわりのトレーサーを書きたいときは、このへん使ったほうがいいと思います。