member functions tracer

なんか ModuleInfo とか ClassInfo あたりまでは reflection できてるのなー、ということで これ をちゃんと実装してみた。

http://shinh.skr.jp/d/tracer.tgz

 % cat example.d
 import tracer;
 
 class C {
     void f() {
         g();
     }
     void g() {
     }
 }
 
 void main() {
     initTracer();
     C c = new C();
     c.f();
 }
 % dmd example.d tracer.d
 gcc-3.4 example.o tracer.o -o example -m32 -lphobos2 -lpthread -lm
 % example
 % ./dumptrace example
 void example.C.f() @0804a382 (from _Dmain @0804a3bc)
 void example.C.g() @0804a394 (from void example.C.f() @0804a38a)

こんな感じで呼び出し履歴を保存しておいて後でダンプできるわけ。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h