バックトレースの取得
僕はRubyでプログラムをデバッグするときには、デバッガを使わずにデバッグライトを直に埋め込んでいます。それもこれもRubyでは、関数pなどで簡単にオブジェクトの状態を表示できるからなんだけど…
で、そんなデバッグライトを使ってデバッグをする時に、バックトレースを簡単に取得したいなーと思って以下の関数を書いてみました。
def print_backtrace(mesg = 'XXX') begin raise mesg rescue RuntimeError => ex puts ex.message puts ex.backtrace[1 .. -1] end end
こんな感じで使うと、
def hello puts 'Hello, world!!' print_backtrace 'some message' end hello
こんな出力が得られます。
Hello, world!! some message ./test.rb:14:in `hello' ./test.rb:17