なかだです。

Procを使うスクリプトをデバッグしていると、一体どれがどのブロッ
クに対応するのか分からなくなることがないでしょうか。ということ
でProc#to_sにファイル名と行番号を追加するパッチです。


Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.309 diff -u -2 -p -r1.309 eval.c --- eval.c 3 Aug 2002 12:27:33 -0000 1.309 +++ eval.c 7 Aug 2002 01:35:55 -0000 @@ -6623,9 +6623,18 @@ proc_to_s(self, other) struct BLOCK *data; char *cname = rb_class2name(CLASS_OF(self)); + long len = strlen(cname)+6+16+1; /* 6:tags 16:addr 1:nul */ VALUE str; Data_Get_Struct(self, struct BLOCK, data); - str = rb_str_new(0, strlen(cname)+6+16+1); /* 6:tags 16:addr 1:nul */ - sprintf(RSTRING(str)->ptr, "#<%s:0x%p>", cname, data->tag); + if (data->body) { + len += strlen(data->body->nd_file)+16; + str = rb_str_new(0, len); + sprintf(RSTRING(str)->ptr, "#<%s:0x%p@%s:%d>", cname, data->tag, + data->body->nd_file, nd_line(data->body)); + } + else { + str = rb_str_new(0, len); + sprintf(RSTRING(str)->ptr, "#<%s:0x%p>", cname, data->tag); + } RSTRING(str)->len = strlen(RSTRING(str)->ptr); if (OBJ_TAINTED(self)) OBJ_TAINT(str);
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦