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)
こんな感じで呼び出し履歴を保存しておいて後でダンプできるわけ。