From: Chris Howlett Date: 2009-06-09T18:53:46+09:00 Subject: [ruby-core:23768] [Bug #1593] Exception backtrace within eval lacks topmost function Bug #1593: Exception backtrace within eval lacks topmost function http://redmine.ruby-lang.org/issues/show/1593 Author: Chris Howlett Status: Open, Priority: Normal ruby -v: ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] Hi, I have a code snippet which uses eval to execute a Ruby fragment, protected with begin...rescue. If I attempt to display the exception backtrace within the rescue branch, the topmost line of context is missing. For instance: except.rb: def foo() bar() end def bar() baz() end def baz() raise "Boom" end puts "Direct call." begin foo rescue => e puts e.backtrace end puts "\nThrough eval." begin eval "foo" rescue => e puts e.backtrace end Running this code produces: \lib>except.rb Direct call. /lib/except.rb:10:in `baz' /lib/except.rb:6:in `bar' /lib/except.rb:2:in `foo' /lib/except.rb:15 Through eval. /lib/except.rb:22 /lib/except.rb:6:in `bar' /lib/except.rb:2:in `foo' (eval):1 Note that in the eval case, `baz' is not present in the backtrace. ---------------------------------------- http://redmine.ruby-lang.org