From: matz@... (Yukihiro Matsumoto) Date: 2003-11-19T22:36:14+09:00 Subject: [ruby-list:38811] Re: バックトレースの表示指定 まつもと ゆきひろです In message "[ruby-list:38810] バックトレースの表示指定" on 03/11/19, "U.Nakamura" writes: |捕捉されない例外が発生した場合、rubyはバックトレースを吐いて |くれるわけですが、比較的複雑なスクリプトの場合、バックトレー |スが長すぎてrubyによって途中を省略されてしまいます。 | |省略が発生することがあること自体はOKなのですが、この省略の形 |式が、例外の発生箇所から8行、中略、トップレベルまで4行、とい |う形式で固定(eval.cのTRACE_MAX, TRACE_HEAD, TRACE_TAIL)である |ため、比較的ややこしいスクリプトから比較的ややこしいライブラ |リを呼び出していて、その内部で例外が発生した場合、 | ライブラリの中のバックトレースが8行 | ... n levels ... | スクリプトのトップレベル付近が4行 |とだけ出て、肝心要のライブラリ呼び出し部付近がまったく特定で |きなかったりします。 | |というわけで、このバックトレースの表示行数を、固定値ではなく、 |スクリプトの実行時に指定できるインターフェースが欲しいのですが、 |いかがでしょう? begin foo rescue => e cb = e.backtrace print cb.shift, ":", e.message, "\n" cb.each{|c| print "\tfrom ", c, "\n"} exit 1 end とでもすればいくらでも表示できると思うのですが、それではだめ ということ?