ruby-debug 0.10.4 → 0.10.5.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +5 -0
- data/CHANGES +17 -0
- data/ChangeLog +6086 -3711
- data/README +39 -0
- data/Rakefile +67 -82
- data/cli/ruby-debug/commands/breakpoints.rb +4 -2
- data/cli/ruby-debug/commands/edit.rb +3 -2
- data/cli/ruby-debug/commands/info.rb +5 -4
- data/cli/ruby-debug/commands/irb.rb +7 -8
- data/cli/ruby-debug/commands/list.rb +1 -1
- data/cli/ruby-debug/commands/set.rb +7 -1
- data/cli/ruby-debug/commands/show.rb +8 -3
- data/cli/ruby-debug/processor.rb +10 -4
- data/doc/rdebug.1 +1 -1
- data/rdbg.rb +1 -1
- data/test/base/base.rb +7 -4
- data/test/base/binding.rb +3 -12
- data/test/base/catchpoint.rb +2 -9
- data/test/base/load.rb +18 -14
- data/test/base/reload_bug.rb +2 -2
- data/test/cli/commands/catchpoint_test.rb +1 -13
- data/test/cli/commands/unit/regexp.rb +2 -8
- data/test/data/annotate.cmd +2 -2
- data/test/data/annotate.right +8 -8
- data/test/data/at-exit.cmd +4 -0
- data/test/data/at-exit.right +12 -0
- data/test/data/break_bad.cmd +3 -5
- data/test/data/break_bad.right +4 -6
- data/test/data/break_tracelines.cmd +9 -0
- data/test/data/break_tracelines.right +17 -0
- data/test/data/breakpoints-basename.cmd +2 -0
- data/test/data/breakpoints-basename.right +10 -0
- data/test/data/breakpoints.cmd +0 -1
- data/test/data/breakpoints.right +1 -3
- data/test/data/catch.cmd +1 -0
- data/test/data/catch.right +2 -0
- data/test/data/continue_bad.cmd +4 -0
- data/test/data/continue_bad.right +9 -0
- data/test/data/ctrl.right +2 -1
- data/test/data/dollar-0.right +3 -2
- data/test/data/dollar-0a.right +1 -0
- data/test/data/dollar-0b.right +1 -0
- data/test/data/edit.cmd +1 -1
- data/test/data/edit.right +4 -4
- data/test/data/emacs_basic.cmd +1 -34
- data/test/data/emacs_basic.right +10 -92
- data/test/data/frame.cmd +0 -3
- data/test/data/frame.right +0 -4
- data/test/data/info-file-break.cmd +4 -0
- data/test/data/info-file-break.right +11 -0
- data/test/data/info-thread.right +4 -4
- data/test/data/info-var-bug2.right +2 -2
- data/test/data/info.cmd +0 -1
- data/test/data/info.right +1 -5
- data/test/data/linetrace-jruby.right +23 -0
- data/test/data/list.right +13 -13
- data/test/data/output.right +4 -4
- data/test/data/post-mortem-osx.right +5 -4
- data/test/data/quit.right +9 -0
- data/test/data/raise-jruby.right +26 -0
- data/test/data/raise.right +1 -1
- data/test/data/save.cmd +1 -0
- data/test/data/save.right +4 -2
- data/test/data/stepping.cmd +2 -2
- data/test/data/stepping.right +4 -4
- data/test/data/test-init.right +2 -2
- data/test/data/trace-jruby.right +14 -0
- data/test/example/a/example.rb +1 -0
- data/test/example/at-exit.rb +3 -0
- data/test/example/b/example.rb +1 -0
- data/test/{bp_loop_issue.rb → example/bp_loop_issue.rb} +0 -0
- data/test/example/breakpoints-basename.rb +2 -0
- data/test/{brkpt-class-bug.rb → example/brkpt-class-bug.rb} +0 -0
- data/test/{classes.rb → example/classes.rb} +0 -0
- data/test/{dollar-0.rb → example/dollar-0.rb} +1 -0
- data/test/{except-bug1.rb → example/except-bug1.rb} +0 -0
- data/test/file with space.rb b/data/test/example/file with → space.rb +0 -0
- data/test/{gcd.rb → example/gcd.rb} +0 -0
- data/test/{info-var-bug.rb → example/info-var-bug.rb} +0 -0
- data/test/{info-var-bug2.rb → example/info-var-bug2.rb} +0 -0
- data/test/{null.rb → example/null.rb} +0 -0
- data/test/{output.rb → example/output.rb} +0 -0
- data/test/{pm-bug.rb → example/pm-bug.rb} +0 -0
- data/test/{pm.rb → example/pm.rb} +0 -0
- data/test/{raise.rb → example/raise.rb} +0 -0
- data/test/helper.rb +52 -34
- data/test/rdebug-save.1 +2 -2
- data/test/test-annotate.rb +4 -16
- data/test/test-at-exit.rb +13 -0
- data/test/test-break-bad.rb +14 -25
- data/test/test-breakpoints.rb +13 -14
- data/test/test-brkpt-class-bug.rb +3 -16
- data/test/test-catch.rb +3 -15
- data/test/test-condition.rb +3 -15
- data/test/test-display.rb +3 -15
- data/test/test-dollar-0.rb +23 -35
- data/test/test-edit.rb +4 -16
- data/test/test-emacs-basic.rb +4 -17
- data/test/test-enable.rb +3 -15
- data/test/test-except-bug1.rb +6 -21
- data/test/test-file-with-space.rb +3 -15
- data/test/test-finish.rb +11 -23
- data/test/test-frame.rb +14 -20
- data/test/test-hist.rb +6 -10
- data/test/test-info-thread.rb +13 -21
- data/test/test-info-var.rb +20 -37
- data/test/test-info.rb +16 -15
- data/test/test-list.rb +3 -14
- data/test/test-method.rb +9 -23
- data/test/test-output.rb +3 -16
- data/test/test-pm.rb +16 -38
- data/test/test-quit.rb +3 -20
- data/test/test-raise.rb +3 -15
- data/test/test-save.rb +12 -21
- data/test/test-setshow.rb +3 -15
- data/test/test-source.rb +3 -15
- data/test/test-stepping.rb +3 -15
- data/test/test-trace.rb +22 -45
- metadata +199 -159
- data/VERSION +0 -3
- data/cli/ruby-debug/commands/continue.RB +0 -48
- data/cli/ruby-debug/commands/disassemble.RB +0 -38
- data/cli/ruby-debug/commands/raise.RB +0 -41
- data/cli/ruby-debug/commands/source.RB +0 -44
- data/cli/ruby-debug/processor.RB +0 -484
- data/runner.sh +0 -7
- data/test/except-bug2.rb +0 -7
- data/test/scope-test.rb +0 -8
- data/test/tvar.rb +0 -3
data/README
CHANGED
@@ -112,3 +112,42 @@ your program can be minimized.
|
|
112
112
|
== License
|
113
113
|
|
114
114
|
See LICENSE for license information.
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
= ruby-debug-base for JRuby
|
119
|
+
|
120
|
+
== Overview
|
121
|
+
|
122
|
+
(j)ruby-debug-base provides the fast debugger extension for JRuby interpreter.
|
123
|
+
It is the same as ruby-debug-base native C extension from ruby-debug project
|
124
|
+
(http://rubyforge.org/projects/ruby-debug/), but for JRuby.
|
125
|
+
|
126
|
+
== Install
|
127
|
+
|
128
|
+
(j)ruby-debug-base is available as a RubyGem:
|
129
|
+
|
130
|
+
jruby -S gem install ruby-debug-base
|
131
|
+
|
132
|
+
== Usage
|
133
|
+
|
134
|
+
The usage is then the same as with native ruby-debugger, but you might need to
|
135
|
+
force JRuby which has to run in interpreted mode. Simplest usage is:
|
136
|
+
|
137
|
+
$ jruby --debug -S rdebug <your-script>
|
138
|
+
|
139
|
+
Or easier, you might create 'jruby-dm' ('dm' for 'debugger-mode'):
|
140
|
+
|
141
|
+
$ cat ~/bin/jruby-dm
|
142
|
+
#!/bin/bash
|
143
|
+
jruby --debug "$@"
|
144
|
+
|
145
|
+
Then you may run just as you used to:
|
146
|
+
|
147
|
+
$ jruby-dm -S rdebug <your-script>
|
148
|
+
|
149
|
+
For more information see: http://bashdb.sourceforge.net/ruby-debug.html
|
150
|
+
|
151
|
+
== License
|
152
|
+
|
153
|
+
See MIT-LICENSE for license information.
|
data/Rakefile
CHANGED
@@ -1,34 +1,17 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
# -*- Ruby -*-
|
3
3
|
require 'rubygems'
|
4
|
-
require '
|
5
|
-
require '
|
4
|
+
require 'rubygems/package_task'
|
5
|
+
require 'rdoc/task'
|
6
6
|
require 'rake/testtask'
|
7
|
+
require 'rake/extensiontask'
|
8
|
+
require 'rake/javaextensiontask'
|
9
|
+
|
10
|
+
$:.push File.expand_path("../lib", __FILE__)
|
11
|
+
require "ruby-debug-base/version"
|
7
12
|
|
8
13
|
SO_NAME = "ruby_debug.so"
|
9
14
|
ROOT_DIR = File.dirname(__FILE__)
|
10
|
-
VERSION_FILE = ROOT_DIR + '/VERSION'
|
11
|
-
|
12
|
-
def make_version_file
|
13
|
-
ruby_debug_version = open("ext/ruby_debug.c").
|
14
|
-
grep(/^#define DEBUG_VERSION/).first[/"(.+)"/,1]
|
15
|
-
File.open(VERSION_FILE, 'w') do |f|
|
16
|
-
f.write(
|
17
|
-
"# This file was created automatically from data in ext/ruby_debug.c via:
|
18
|
-
# rake :make_version_file.
|
19
|
-
#{ruby_debug_version}
|
20
|
-
")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
make_version_file unless File.exist?(VERSION_FILE)
|
25
|
-
ruby_debug_version = nil
|
26
|
-
open(VERSION_FILE).each do |line|
|
27
|
-
next if line =~ /^#/
|
28
|
-
ruby_debug_version = line.chomp
|
29
|
-
break
|
30
|
-
end
|
31
|
-
|
32
15
|
|
33
16
|
# ------- Default Package ----------
|
34
17
|
COMMON_FILES = FileList[
|
@@ -36,7 +19,6 @@ COMMON_FILES = FileList[
|
|
36
19
|
'CHANGES',
|
37
20
|
'LICENSE',
|
38
21
|
'README',
|
39
|
-
'VERSION',
|
40
22
|
'Rakefile',
|
41
23
|
]
|
42
24
|
|
@@ -52,19 +34,14 @@ CLI_FILES = COMMON_FILES + FileList[
|
|
52
34
|
'test/rdebug-save.1',
|
53
35
|
'test/**/data/*.cmd',
|
54
36
|
'test/**/data/*.right',
|
37
|
+
'test/**/example/*.rb',
|
55
38
|
'test/config.yaml',
|
56
39
|
'test/**/*.rb',
|
57
40
|
'rdbg.rb',
|
58
|
-
'runner.sh',
|
59
41
|
CLI_TEST_FILE_LIST
|
60
42
|
]
|
61
43
|
|
62
|
-
BASE_TEST_FILE_LIST =
|
63
|
-
test/base/base.rb
|
64
|
-
test/base/binding.rb
|
65
|
-
test/base/catchpoint.rb
|
66
|
-
test/base/reload_bug.rb
|
67
|
-
)
|
44
|
+
BASE_TEST_FILE_LIST = FileList['test/base/*.rb']
|
68
45
|
|
69
46
|
BASE_FILES = COMMON_FILES + FileList[
|
70
47
|
'ext/breakpoint.c',
|
@@ -72,54 +49,46 @@ BASE_FILES = COMMON_FILES + FileList[
|
|
72
49
|
'ext/ruby_debug.c',
|
73
50
|
'ext/ruby_debug.h',
|
74
51
|
'ext/win32/*',
|
75
|
-
'lib
|
52
|
+
'lib/ruby-debug-base.rb',
|
53
|
+
'lib/ruby-debug-base/version.rb',
|
76
54
|
BASE_TEST_FILE_LIST,
|
77
55
|
]
|
78
56
|
|
79
|
-
desc "Test everything."
|
80
57
|
ext = File.join(ROOT_DIR, 'ext')
|
81
|
-
test_and_args = File.exist?(ext) ? {:test => :test_base} : [:test]
|
82
|
-
task test_and_args do
|
83
|
-
Rake::TestTask.new(:test) do |t|
|
84
|
-
t.libs += %W(#{ROOT_DIR}/lib #{ROOT_DIR}/cli)
|
85
|
-
t.libs << ext if File.exist?(ext)
|
86
|
-
t.test_files = CLI_TEST_FILE_LIST
|
87
|
-
t.verbose = true
|
88
|
-
end
|
89
|
-
end
|
90
58
|
|
91
|
-
desc "Test
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
59
|
+
desc "Test everything."
|
60
|
+
Rake::TestTask.new(:test) do |t|
|
61
|
+
t.libs += %W(#{ROOT_DIR}/lib #{ROOT_DIR}/cli)
|
62
|
+
t.libs << ext if File.exist?(ext)
|
63
|
+
t.test_files = CLI_TEST_FILE_LIST
|
64
|
+
t.options = '--verbose' if $VERBOSE
|
65
|
+
t.ruby_opts << "--debug" if defined?(JRUBY_VERSION)
|
98
66
|
end
|
99
67
|
|
100
|
-
|
101
|
-
task :check => :test
|
68
|
+
task :test => :test_base if File.exist?(ext)
|
102
69
|
|
103
|
-
desc "
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
70
|
+
desc "Test ruby-debug-base."
|
71
|
+
Rake::TestTask.new(:test_base) do |t|
|
72
|
+
t.libs += ['./ext', './lib']
|
73
|
+
t.test_files = FileList[BASE_TEST_FILE_LIST]
|
74
|
+
t.options = '--verbose' if $VERBOSE
|
75
|
+
t.ruby_opts << "--debug" if defined?(JRUBY_VERSION)
|
108
76
|
end
|
109
77
|
|
110
|
-
|
111
|
-
task :
|
112
|
-
|
113
|
-
|
114
|
-
system("./elisp-comp ./rdebug.el")
|
115
|
-
end
|
78
|
+
if defined?(JRUBY_VERSION)
|
79
|
+
task :test_base => 'jruby:compile:java'
|
80
|
+
else
|
81
|
+
task :test_base => :compile
|
116
82
|
end
|
117
83
|
|
84
|
+
desc "Test everything - same as test."
|
85
|
+
task :check => :test
|
86
|
+
|
118
87
|
desc "Create a GNU-style ChangeLog via svn2cl"
|
119
88
|
task :ChangeLog do
|
120
|
-
system('
|
121
|
-
system(
|
122
|
-
system(
|
89
|
+
system('git log --pretty --numstat --summary | git2cl > ChangeLog')
|
90
|
+
system('git log --pretty --numstat --summary ext | git2cl > ext/ChangeLog')
|
91
|
+
system('git log --pretty --numstat --summary lib | git2cl > lib/ChangeLog')
|
123
92
|
end
|
124
93
|
|
125
94
|
# Base GEM Specification
|
@@ -135,7 +104,7 @@ provides support that front-ends can build on. It provides breakpoint
|
|
135
104
|
handling, bindings for stack frames among other things.
|
136
105
|
EOF
|
137
106
|
|
138
|
-
spec.version =
|
107
|
+
spec.version = Debugger::VERSION
|
139
108
|
|
140
109
|
spec.author = "Kent Sibilev"
|
141
110
|
spec.email = "ksibilev@yahoo.com"
|
@@ -148,7 +117,8 @@ EOF
|
|
148
117
|
spec.date = Time.now
|
149
118
|
spec.rubyforge_project = 'ruby-debug'
|
150
119
|
spec.add_dependency('linecache', '>= 0.3')
|
151
|
-
|
120
|
+
spec.add_development_dependency('rake-compiler')
|
121
|
+
|
152
122
|
spec.test_files = FileList[BASE_TEST_FILE_LIST]
|
153
123
|
|
154
124
|
# rdoc
|
@@ -165,7 +135,7 @@ cli_spec = Gem::Specification.new do |spec|
|
|
165
135
|
A generic command line interface for ruby-debug.
|
166
136
|
EOF
|
167
137
|
|
168
|
-
spec.version =
|
138
|
+
spec.version = Debugger::VERSION
|
169
139
|
|
170
140
|
spec.author = "Kent Sibilev"
|
171
141
|
spec.email = "ksibilev@yahoo.com"
|
@@ -179,7 +149,7 @@ EOF
|
|
179
149
|
spec.date = Time.now
|
180
150
|
spec.rubyforge_project = 'ruby-debug'
|
181
151
|
spec.add_dependency('columnize', '>= 0.1')
|
182
|
-
spec.add_dependency('ruby-debug-base', "~> #{
|
152
|
+
spec.add_dependency('ruby-debug-base', "~> #{Debugger::VERSION}.0")
|
183
153
|
|
184
154
|
# FIXME: work out operational logistics for this
|
185
155
|
# spec.test_files = FileList[CLI_TEST_FILE_LIST]
|
@@ -190,14 +160,18 @@ EOF
|
|
190
160
|
end
|
191
161
|
|
192
162
|
# Rake task to build the default package
|
193
|
-
|
163
|
+
Gem::PackageTask.new(base_spec) do |pkg|
|
194
164
|
pkg.need_tar = true
|
195
165
|
end
|
196
|
-
|
166
|
+
Gem::PackageTask.new(cli_spec) do |pkg|
|
197
167
|
pkg.need_tar = true
|
198
168
|
end
|
199
169
|
|
200
|
-
|
170
|
+
Rake::ExtensionTask.new('ruby_debug', base_spec) do |t|
|
171
|
+
t.ext_dir = "ext"
|
172
|
+
end
|
173
|
+
|
174
|
+
task :default => :test
|
201
175
|
|
202
176
|
# Windows specification
|
203
177
|
win_spec = base_spec.clone
|
@@ -244,11 +218,12 @@ task :clean do
|
|
244
218
|
derived_files = Dir.glob(".o") + Dir.glob("*.so")
|
245
219
|
rm derived_files unless derived_files.empty?
|
246
220
|
end
|
221
|
+
rm 'lib/ruby_debug.jar' if File.exists?("lib/ruby_debug.jar")
|
247
222
|
end
|
248
223
|
|
249
224
|
# --------- RDoc Documentation ------
|
250
225
|
desc "Generate rdoc documentation"
|
251
|
-
|
226
|
+
RDoc::Task.new("rdoc") do |rdoc|
|
252
227
|
rdoc.rdoc_dir = 'doc/rdoc'
|
253
228
|
rdoc.title = "ruby-debug"
|
254
229
|
# Show source inline with line numbers
|
@@ -284,9 +259,9 @@ task :rubyforge_upload do
|
|
284
259
|
end
|
285
260
|
end
|
286
261
|
|
287
|
-
def
|
262
|
+
def install_gem(spec, *opts)
|
288
263
|
args = ['gem', 'install', "pkg/#{spec.name}-#{spec.version}.gem"] + opts
|
289
|
-
args.unshift 'sudo' unless 0 == Process.uid
|
264
|
+
args.unshift 'sudo' unless 0 == Process.uid || ENV['rvm_path']
|
290
265
|
system(*args)
|
291
266
|
end
|
292
267
|
|
@@ -294,18 +269,28 @@ desc 'Install locally'
|
|
294
269
|
task :install => :package do
|
295
270
|
Dir.chdir(File::dirname(__FILE__)) do
|
296
271
|
# ri and rdoc take lots of time
|
297
|
-
|
298
|
-
|
272
|
+
install_gem(base_spec, '--no-ri', '--no-rdoc')
|
273
|
+
install_gem(cli_spec, '--no-ri', '--no-rdoc')
|
299
274
|
end
|
300
275
|
end
|
301
276
|
|
302
277
|
task :install_full => :package do
|
303
278
|
Dir.chdir(File::dirname(__FILE__)) do
|
304
|
-
|
305
|
-
|
279
|
+
install_gem(base_spec)
|
280
|
+
install_gem(cli_spec)
|
306
281
|
end
|
307
282
|
end
|
308
283
|
|
309
|
-
|
310
|
-
|
284
|
+
namespace :jruby do
|
285
|
+
jruby_spec = base_spec.clone
|
286
|
+
jruby_spec.platform = "java"
|
287
|
+
jruby_spec.files = jruby_spec.files.reject {|f| f =~ /^ext/ }
|
288
|
+
jruby_spec.files += ['lib/ruby_debug.jar']
|
289
|
+
jruby_spec.extensions = []
|
290
|
+
|
291
|
+
Gem::PackageTask.new(jruby_spec) {}
|
292
|
+
|
293
|
+
Rake::JavaExtensionTask.new('ruby_debug') do |t|
|
294
|
+
t.ext_dir = "src"
|
295
|
+
end
|
311
296
|
end
|
@@ -65,11 +65,13 @@ module Debugger
|
|
65
65
|
if LineCache.cache(brkpt_filename, Command.settings[:reload_source_on_change])
|
66
66
|
last_line = LineCache.size(brkpt_filename)
|
67
67
|
if line > last_line
|
68
|
-
errmsg("There are only %d lines in file \"%s\".\n", last_line,
|
68
|
+
errmsg("There are only %d lines in file \"%s\".\n", last_line,
|
69
|
+
CommandProcessor.canonic_file(file))
|
69
70
|
return
|
70
71
|
end
|
71
72
|
unless LineCache.trace_line_numbers(brkpt_filename).member?(line)
|
72
|
-
errmsg("Line %d is not a stopping point in file \"%s\".\n", line,
|
73
|
+
errmsg("Line %d is not a stopping point in file \"%s\".\n", line,
|
74
|
+
CommandProcessor.canonic_file(file))
|
73
75
|
return
|
74
76
|
end
|
75
77
|
else
|
@@ -19,9 +19,10 @@ module Debugger
|
|
19
19
|
errmsg "Invalid file/line number specification: #{@match[1]}\n"
|
20
20
|
return
|
21
21
|
end
|
22
|
-
editor = ENV['EDITOR'] || 'ex'
|
22
|
+
editor = ENV['EDITOR'] || '/bin/ex'
|
23
23
|
if File.readable?(file)
|
24
|
-
system("#{editor} +#{line_number} #{file}")
|
24
|
+
system("#{editor} +#{line_number} \"#{file}\"")
|
25
|
+
msg "Warning: return code was #{$?.exitstatus}" if $?.exitstatus != 0
|
25
26
|
else
|
26
27
|
errmsg "File \"#{file}\" is not readable.\n"
|
27
28
|
end
|
@@ -305,15 +305,16 @@ item. If \'verbose\' is given then the entire stack frame is shown.'],
|
|
305
305
|
end
|
306
306
|
|
307
307
|
print "Program stopped. "
|
308
|
+
event_arg = @state.processor.event_arg
|
308
309
|
case @state.context.stop_reason
|
309
310
|
when :step
|
310
311
|
print "It stopped after stepping, next'ing or initial start.\n"
|
311
312
|
when :breakpoint
|
312
|
-
print("It stopped at
|
313
|
+
print("It stopped at breakpoint %d.\n",
|
314
|
+
Debugger.breakpoints.index(event_arg) + 1)
|
313
315
|
when :catchpoint
|
314
|
-
print("It stopped at
|
315
|
-
|
316
|
-
print("It stopped at a catchpoint.\n")
|
316
|
+
print("It stopped at catchpoint `%s' (%s) .\n", event_arg,
|
317
|
+
event_arg.class)
|
317
318
|
else
|
318
319
|
print "unknown reason: %s\n" % @state.context.stop_reason.to_s
|
319
320
|
end
|
@@ -3,9 +3,10 @@ require 'irb'
|
|
3
3
|
module IRB # :nodoc:
|
4
4
|
module ExtendCommand # :nodoc:
|
5
5
|
|
6
|
-
# FIXME: should we read these out of a directory to
|
7
|
-
# make this more user-customizable?
|
8
6
|
# A base command class that resume execution
|
7
|
+
#
|
8
|
+
# FIXME: should we read these out of a directory to make this more
|
9
|
+
# user-customizable?
|
9
10
|
class DebuggerResumeCommand
|
10
11
|
def self.execute(conf, *opts)
|
11
12
|
name =
|
@@ -90,15 +91,13 @@ module IRB # :nodoc:
|
|
90
91
|
end
|
91
92
|
end
|
92
93
|
|
93
|
-
# Monkeypatch to save the current IRB statement to be run and make the
|
94
|
-
# "filename" unique. Possibly not needed.
|
94
|
+
# Monkeypatch to save the current IRB statement to be run and make the
|
95
|
+
# instruction sequence "filename" unique. Possibly not needed.
|
95
96
|
class IRB::Context
|
97
|
+
alias_method :_ruby_debug_original_evaluate, :evaluate
|
96
98
|
def evaluate(line, line_no)
|
97
99
|
$rdebug_irb_statements = line
|
98
|
-
|
99
|
-
set_last_value(@workspace.evaluate(self, line, irb_path, line_no))
|
100
|
-
# @workspace.evaluate("_ = IRB.conf[:MAIN_CONTEXT]._")
|
101
|
-
# @_ = @workspace.evaluate(line, irb_path, line_no)
|
100
|
+
_ruby_debug_original_evaluate(line, line_no)
|
102
101
|
end
|
103
102
|
end
|
104
103
|
|
@@ -74,7 +74,7 @@ module Debugger
|
|
74
74
|
if lines
|
75
75
|
b = lines.size - (e - b) if b >= lines.size
|
76
76
|
e = lines.size if lines.size < e
|
77
|
-
print "[%d, %d] in %s\n", b, e, file
|
77
|
+
print "[%d, %d] in %s\n", b, e, CommandProcessor.canonic_file(file)
|
78
78
|
[b, 1].max.upto(e) do |n|
|
79
79
|
if n > 0 && lines[n-1]
|
80
80
|
if n == current
|
@@ -28,6 +28,8 @@ ruby-debug."],
|
|
28
28
|
['debuggertesting', 8, false,
|
29
29
|
"Used when testing the debugger"],
|
30
30
|
['forcestep', 2, true,
|
31
|
+
"Deprecated - same as 'set different'"],
|
32
|
+
['different', 2, true,
|
31
33
|
"Make sure 'next/step' commands always move to a new line"],
|
32
34
|
['fullpath', 2, true,
|
33
35
|
"Display full file names in frames"],
|
@@ -65,7 +67,8 @@ set history size -- Set the size of the command history"],
|
|
65
67
|
print "\"set\" must be followed by the name of an set command:\n"
|
66
68
|
print "List of set subcommands:\n\n"
|
67
69
|
for subcmd in Subcommands do
|
68
|
-
print "set #{subcmd.name} -- #{subcmd.short_help}\n"
|
70
|
+
print "set #{subcmd.name} -- #{subcmd.short_help}\n" unless
|
71
|
+
subcmd.name == 'forcestep'
|
69
72
|
end
|
70
73
|
else
|
71
74
|
args = @match[1].split(/[ \t]+/)
|
@@ -135,7 +138,10 @@ set history size -- Set the size of the command history"],
|
|
135
138
|
if set_on
|
136
139
|
Command.settings[:basename] = true
|
137
140
|
end
|
141
|
+
when /^different$/
|
142
|
+
self.class.settings[:force_stepping] = set_on
|
138
143
|
when /^forcestep$/
|
144
|
+
print "This setting deprecated. Please use 'set different'.\n"
|
139
145
|
self.class.settings[:force_stepping] = set_on
|
140
146
|
when /^history$/
|
141
147
|
if 2 == args.size
|
@@ -71,9 +71,12 @@ module Debugger
|
|
71
71
|
when /^debuggertesting$/
|
72
72
|
on_off = Command.settings[:debuggertesting]
|
73
73
|
return "Currently testing the debugger is #{show_onoff(on_off)}."
|
74
|
+
when /^different$/
|
75
|
+
on_off = self.class.settings[:force_stepping]
|
76
|
+
return "different-line stepping is #{show_onoff(on_off)}."
|
74
77
|
when /^forcestep$/
|
75
78
|
on_off = self.class.settings[:force_stepping]
|
76
|
-
return "
|
79
|
+
return "different-line stepping is #{show_onoff(on_off)}."
|
77
80
|
when /^fullpath$/
|
78
81
|
on_off = Command.settings[:full_path]
|
79
82
|
return "Displaying frame's full file names is #{show_onoff(on_off)}."
|
@@ -166,7 +169,8 @@ ruby-debug."],
|
|
166
169
|
['callstyle', 2, "Show paramater style used showing call frames"],
|
167
170
|
['commands', 2, "Show the history of commands you typed",
|
168
171
|
"You can supply a command number to start with."],
|
169
|
-
['
|
172
|
+
['different', 2, "Show if 'next/step' forces move to a new line"],
|
173
|
+
['forcestep', 1, "Deprecated. Please use 'different'"],
|
170
174
|
['fullpath', 2, "Show if full file names are displayed in frames"],
|
171
175
|
['history', 2, "Generic command for showing command history parameters",
|
172
176
|
"show history filename -- Show the filename in which to record the command history
|
@@ -200,7 +204,8 @@ show history size -- Show the size of the command history"],
|
|
200
204
|
print "\"show\" must be followed by the name of an show command:\n"
|
201
205
|
print "List of show subcommands:\n\n"
|
202
206
|
for subcmd in Subcommands do
|
203
|
-
print "show #{subcmd.name} -- #{subcmd.short_help}\n"
|
207
|
+
print "show #{subcmd.name} -- #{subcmd.short_help}\n" unless
|
208
|
+
'forcestep' == subcmd.name
|
204
209
|
end
|
205
210
|
else
|
206
211
|
args = @match[1].split(/[ \t]+/)
|