Mitsukiの魔法実験室

Mitsuki's Magic Laboratory
Since 2002.09.14

関数の呼び出しをトレースする

Posted at 2006/08/04 23:32 in Programming

 謎現象のデバッグ時や、挙動のよくわからないソースをおいかけている時など、どういう順番で関数が呼ばれているのがを可視化(ログ化)できればなーと思うことがよくあるのですが、ちょっとした方法を思いついたので試してみようかな……とおもったら、gccなら -finstrument-functionsというオプションでそういう仕組みが実装可能 らしいです。流石gcc。
 VCでもBoundCheckerを使えば可能らしいですけど。……そんなもん個人で買えるかっ。

 ちなみに上で書いた「ちょっとした方法」というのは、「.o(.obj)のFixUp情報を書き換えて、関数コールの前後で指定関数を呼ぶproxyコードを呼ぶようにしてから、リンクする」という激しく力業な方法。gccやBoundCheckerも多分似たようなことをしているのでしょうけど(勘)、libbfdが使える環境なら自前でも楽勝で書けそう?

ただし、わたしのターゲットは16bit OMFですが……orz