diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-24 16:21:54 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-24 16:21:54 +0000 |
commit | 181a4ea8c6fce1c0388050ab4c914a0f1281926b (patch) | |
tree | 173247f8756b99bd6b84cca54f829315a46ba169 | |
parent | 7dd8c1f20fe89b3fdf19778c5f6e970503b23a9e (diff) |
debug.rb: Fix debug listing
* lib/debug.rb (script_lines): get source lines from SCRIPT_LINES__ or
read from the file.
* lib/debug.rb (display_list): use script_lines instead of recursion.
[Bug #8318]
* lib/debug.rb (line_at): use script_lines same as display_list.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | lib/debug.rb | 21 |
2 files changed, 21 insertions, 10 deletions
@@ -1,4 +1,12 @@ -Thu Apr 25 01:18:55 2013 Nobuyoshi Nakada <[email protected]> +Thu Apr 25 01:21:51 2013 Nobuyoshi Nakada <[email protected]> + + * lib/debug.rb (script_lines): get source lines from SCRIPT_LINES__ or + read from the file. + + * lib/debug.rb (display_list): use script_lines instead of recursion. + [Bug #8318] + + * lib/debug.rb (line_at): use script_lines same as display_list. * lib/debug.rb (display_list): Fix debug listing when called from the same file it has been required. patch by Dario Bertini <berdario AT diff --git a/lib/debug.rb b/lib/debug.rb index b5ae3e95c8..67861cba64 100644 --- a/lib/debug.rb +++ b/lib/debug.rb @@ -752,8 +752,17 @@ EOHELP (id ? ":in `#{id.id2name}'" : "") end + def script_lines(file, line) + unless (lines = SCRIPT_LINES__[file]) and lines != true + Tracer::Single.get_line(file, line) if File.exist?(file) + lines = SCRIPT_LINES__[file] + lines = nil if lines == true + end + lines + end + def display_list(b, e, file, line) - if lines = SCRIPT_LINES__[file] and lines != true + if lines = script_lines(file, line) stdout.printf "[%d, %d] in %s\n", b, e, file b.upto(e) do |n| if n > 0 && lines[n-1] @@ -764,20 +773,14 @@ EOHELP end end end - elsif File.exists? file - Tracer::Single.get_line(file, line) - display_list(b, e, file, line) else stdout.printf "No sourcefile available for %s\n", file end end def line_at(file, line) - lines = SCRIPT_LINES__[file] - if lines - return "\n" if lines == true - line = lines[line-1] - return "\n" unless line + lines = script_lines(file, line) + if lines and line = lines[line-1] return line end return "\n" |