debugger 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +3 -0
- data/README.md +2 -1
- data/Rakefile +4 -5
- data/bin/rdebug +29 -30
- data/lib/debugger.rb +0 -2
- data/lib/debugger/version.rb +1 -1
- data/lib/ruby-debug-base.rb +26 -27
- data/{cli → lib}/ruby-debug.rb +0 -0
- data/{cli → lib}/ruby-debug/command.rb +19 -20
- data/{cli → lib}/ruby-debug/commands/breakpoints.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/catchpoint.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/condition.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/continue.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/control.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/display.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/edit.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/enable.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/eval.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/finish.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/frame.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/help.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/info.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/irb.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/jump.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/kill.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/list.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/method.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/quit.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/reload.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/save.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/set.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/show.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/skip.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/source.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/stepping.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/threads.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/tmate.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/trace.rb +0 -0
- data/{cli → lib}/ruby-debug/commands/variables.rb +0 -0
- data/{cli → lib}/ruby-debug/debugger.rb +0 -0
- data/{cli → lib}/ruby-debug/helper.rb +0 -0
- data/{cli → lib}/ruby-debug/interface.rb +0 -0
- data/{cli → lib}/ruby-debug/processor.rb +0 -0
- data/test/helper.rb +14 -16
- data/test/{cli → lib}/commands/catchpoint_test.rb +4 -12
- data/test/{cli → lib}/commands/unit/regexp.rb +3 -7
- data/test/tdebug.rb +17 -18
- data/test/test-annotate.rb +2 -3
- data/test/test-break-bad.rb +4 -5
- data/test/test-breakpoints.rb +2 -3
- data/test/test-catch.rb +1 -2
- data/test/test-catch2.rb +1 -2
- data/test/test-catch3.rb +1 -2
- data/test/test-condition.rb +2 -3
- data/test/test-ctrl.rb +1 -2
- data/test/test-display.rb +3 -4
- data/test/test-dollar-0.rb +7 -8
- data/test/test-edit.rb +2 -3
- data/test/test-emacs-basic.rb +4 -5
- data/test/test-enable.rb +2 -3
- data/test/test-finish.rb +3 -4
- data/test/test-frame.rb +2 -3
- data/test/test-help.rb +6 -7
- data/test/test-hist.rb +4 -7
- data/test/test-info-thread.rb +2 -3
- data/test/test-info-var.rb +3 -4
- data/test/test-info.rb +2 -3
- data/test/test-init.rb +1 -2
- data/test/test-jump.rb +4 -5
- data/test/test-list.rb +3 -4
- data/test/test-method.rb +4 -5
- data/test/test-next.rb +2 -3
- data/test/test-output.rb +2 -3
- data/test/test-quit.rb +2 -3
- data/test/test-raise.rb +1 -2
- data/test/test-save.rb +2 -3
- data/test/test-scope-var.rb +2 -3
- data/test/test-setshow.rb +2 -3
- data/test/test-source.rb +2 -3
- data/test/test-stepping.rb +2 -3
- data/test/test-trace.rb +4 -5
- data/test/thread1.rb +1 -2
- metadata +76 -51
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/test/helper.rb
CHANGED
@@ -5,7 +5,6 @@ require 'yaml'
|
|
5
5
|
# require 'diff/lcs'
|
6
6
|
# require 'diff/lcs/hunk'
|
7
7
|
|
8
|
-
# begin require 'rubygems' rescue LoadError end
|
9
8
|
# require 'ruby-debug'; Debugger.start
|
10
9
|
|
11
10
|
module TestHelper
|
@@ -14,13 +13,13 @@ module TestHelper
|
|
14
13
|
def run_debugger(testname, args='', outfile=nil, filter=nil, old_code=false,
|
15
14
|
debug_pgm='tdebug.rb')
|
16
15
|
rightfile = File.join('data', "#{testname}.right")
|
17
|
-
|
16
|
+
|
18
17
|
outfile = "#{testname}.out" unless outfile
|
19
18
|
|
20
19
|
if File.exists?(outfile)
|
21
20
|
FileUtils.rm(outfile)
|
22
21
|
end
|
23
|
-
|
22
|
+
|
24
23
|
ENV['RDEBUG'] = debug_pgm
|
25
24
|
|
26
25
|
if old_code
|
@@ -30,7 +29,7 @@ module TestHelper
|
|
30
29
|
end
|
31
30
|
puts "'#{cmd}'" if $DEBUG
|
32
31
|
output = `#{cmd}`
|
33
|
-
|
32
|
+
|
34
33
|
curr_path = Dir.pwd
|
35
34
|
got_lines = File.read(outfile).split(/\n/).map{|s| s.sub(curr_path, '.') }
|
36
35
|
correct_lines = File.read(rightfile).split(/\n/)
|
@@ -58,14 +57,14 @@ module TestHelper
|
|
58
57
|
end
|
59
58
|
end
|
60
59
|
if correct_lines.size != got_lines.size
|
61
|
-
puts("difference in number of lines: " +
|
60
|
+
puts("difference in number of lines: " +
|
62
61
|
"#{correct_lines.size} vs. #{got_lines.size}")
|
63
62
|
return false
|
64
63
|
end
|
65
64
|
return true
|
66
65
|
end
|
67
66
|
|
68
|
-
# FIXME: using this causes the same test to get run several times
|
67
|
+
# FIXME: using this causes the same test to get run several times
|
69
68
|
# and some tests fail probably because of a lack of environment isolation.
|
70
69
|
# Many tests follow a basic pattern: run the debugger with a given
|
71
70
|
# debugger script and compare output produced. The following creates
|
@@ -77,16 +76,16 @@ module TestHelper
|
|
77
76
|
cmd = 'gcd.rb 3 5' unless cmd
|
78
77
|
eval <<-EOF
|
79
78
|
def test_#{test_name}
|
80
|
-
Dir.chdir(\"#{src_dir}\") do
|
81
|
-
assert_equal(true,
|
82
|
-
run_debugger(\"#{base_name}\",
|
79
|
+
Dir.chdir(\"#{src_dir}\") do
|
80
|
+
assert_equal(true,
|
81
|
+
run_debugger(\"#{base_name}\",
|
83
82
|
\"--script #{script_name} -- #{cmd}\"))
|
84
83
|
end
|
85
84
|
end
|
86
85
|
EOF
|
87
86
|
end
|
88
87
|
module_function :add_test
|
89
|
-
|
88
|
+
|
90
89
|
# Adapted from the Ruby Cookbook, Section 6.10: Comparing two files.
|
91
90
|
# def diff_as_string(rightfile, checkfile, format=:unified, context_lines=3)
|
92
91
|
# right_data = File.read(rightfile)
|
@@ -98,7 +97,7 @@ module TestHelper
|
|
98
97
|
# file_length_difference = 0
|
99
98
|
# diffs.each do |piece|
|
100
99
|
# begin
|
101
|
-
# hunk = Diff::LCS::Hunk.new(right_data, check_data, piece,
|
100
|
+
# hunk = Diff::LCS::Hunk.new(right_data, check_data, piece,
|
102
101
|
# context_lines, file_length_difference)
|
103
102
|
# next unless oldhunk
|
104
103
|
#
|
@@ -115,11 +114,11 @@ module TestHelper
|
|
115
114
|
# output << '\n'
|
116
115
|
# end
|
117
116
|
# end
|
118
|
-
|
119
|
-
# # Handle the last remaining hunk
|
117
|
+
|
118
|
+
# # Handle the last remaining hunk
|
120
119
|
# output << oldhunk.diff(format) << '\n'
|
121
120
|
# end
|
122
|
-
|
121
|
+
|
123
122
|
# Loads key from the _config_._yaml_ file.
|
124
123
|
def config_load(key, may_be_nil=false, default_value='')
|
125
124
|
conf = File.join('config.private.yaml') # try private first
|
@@ -139,6 +138,5 @@ module TestHelper
|
|
139
138
|
config_load('ruby_params', true)
|
140
139
|
end
|
141
140
|
module_function :load_params
|
142
|
-
|
143
|
-
end
|
144
141
|
|
142
|
+
end
|
@@ -1,27 +1,19 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'test/unit'
|
4
|
+
require 'ruby-debug'
|
4
5
|
|
5
6
|
class TestCatchCommand < Test::Unit::TestCase
|
6
|
-
|
7
|
-
base_dir = File.expand_path(File.join(File.dirname(__FILE__),
|
8
|
-
'..', '..', '..'))
|
9
|
-
|
10
|
-
%w(ext lib cli).each do |dir|
|
11
|
-
$: << File.join(base_dir, dir)
|
12
|
-
end
|
13
|
-
|
14
|
-
require File.join(base_dir, 'cli', 'ruby-debug')
|
15
|
-
|
7
|
+
|
16
8
|
class MockState
|
17
|
-
attr_accessor :message
|
9
|
+
attr_accessor :message
|
18
10
|
def context; end
|
19
11
|
def confirm(msg); true end
|
20
12
|
def print(*args)
|
21
13
|
@message = *args
|
22
14
|
end
|
23
15
|
end
|
24
|
-
|
16
|
+
|
25
17
|
# regression test for bug #20156
|
26
18
|
def test_catch_does_not_blow_up
|
27
19
|
state = MockState.new
|
@@ -2,13 +2,10 @@ require 'test/unit'
|
|
2
2
|
|
3
3
|
|
4
4
|
class TestCommandREs < Test::Unit::TestCase
|
5
|
-
|
6
|
-
|
7
|
-
'cli', 'ruby-debug'))
|
8
|
-
require File.join(base_dir, 'command')
|
9
|
-
require File.join(base_dir, 'commands', 'frame')
|
5
|
+
require 'ruby-debug/command'
|
6
|
+
require 'ruby-debug/commands/frame'
|
10
7
|
include Debugger
|
11
|
-
|
8
|
+
|
12
9
|
def test_quit
|
13
10
|
c = QuitCommand.new(nil)
|
14
11
|
assert c.regexp.match('quit')
|
@@ -39,4 +36,3 @@ class TestCommandREs < Test::Unit::TestCase
|
|
39
36
|
assert_equal(nil, c.regexp.match('dow'))
|
40
37
|
end
|
41
38
|
end
|
42
|
-
|
data/test/tdebug.rb
CHANGED
@@ -4,11 +4,10 @@
|
|
4
4
|
# FIXME: use the real rdebug script - DRY.
|
5
5
|
|
6
6
|
require 'stringio'
|
7
|
-
require 'rubygems'
|
8
7
|
require 'optparse'
|
9
8
|
require "ostruct"
|
10
9
|
|
11
|
-
TOP_SRC_DIR = File.join(File.dirname(__FILE__), "..") unless
|
10
|
+
TOP_SRC_DIR = File.join(File.dirname(__FILE__), "..") unless
|
12
11
|
defined?(TOP_SRC_DIR)
|
13
12
|
|
14
13
|
$:.unshift File.join(TOP_SRC_DIR, "ext")
|
@@ -17,12 +16,12 @@ $:.unshift File.join(TOP_SRC_DIR, "cli")
|
|
17
16
|
|
18
17
|
def debug_program(options)
|
19
18
|
# Make sure Ruby script syntax checks okay.
|
20
|
-
# Otherwise we get a load message that looks like rdebug has
|
21
|
-
# a problem.
|
19
|
+
# Otherwise we get a load message that looks like rdebug has
|
20
|
+
# a problem.
|
22
21
|
output = `ruby -c "#{Debugger::PROG_SCRIPT}" 2>&1`
|
23
22
|
if $?.exitstatus != 0 and RUBY_PLATFORM !~ /mswin/
|
24
23
|
puts output
|
25
|
-
exit $?.exitstatus
|
24
|
+
exit $?.exitstatus
|
26
25
|
end
|
27
26
|
print "\032\032starting\n" if Debugger.annotate and Debugger.annotate > 2
|
28
27
|
unless options.no_rewrite_program
|
@@ -32,7 +31,7 @@ def debug_program(options)
|
|
32
31
|
# for the first time and then switching to the debug hook that's
|
33
32
|
# normally used would be helpful. Doing this would also help other
|
34
33
|
# first-time initializations such as reloading debugger state
|
35
|
-
# after a restart.
|
34
|
+
# after a restart.
|
36
35
|
|
37
36
|
# However This is just a little more than I want to take on right
|
38
37
|
# now, so I think I'll stick with the slightly hacky approach.
|
@@ -96,20 +95,20 @@ EOB
|
|
96
95
|
Debugger.annotate = s
|
97
96
|
end
|
98
97
|
opts.on("-d", "--debug", "Set $DEBUG=true") {$DEBUG = true}
|
99
|
-
opts.on("--emacs-basic", "Activates basic Emacs mode") do
|
98
|
+
opts.on("--emacs-basic", "Activates basic Emacs mode") do
|
100
99
|
ENV['EMACS'] = '1'
|
101
100
|
options.emacs = true
|
102
101
|
end
|
103
|
-
opts.on("-m", "--post-mortem", "Activate post-mortem mode") do
|
102
|
+
opts.on("-m", "--post-mortem", "Activate post-mortem mode") do
|
104
103
|
options.post_mortem = true
|
105
104
|
end
|
106
|
-
opts.on("--no-control", "Do not automatically start control thread") do
|
105
|
+
opts.on("--no-control", "Do not automatically start control thread") do
|
107
106
|
options.control = false
|
108
107
|
end
|
109
108
|
opts.on("--no-quit", "Do not quit when script finishes") do
|
110
109
|
options.noquit = true
|
111
110
|
end
|
112
|
-
opts.on("--no-stop", "Do not stop when script is loaded") do
|
111
|
+
opts.on("--no-stop", "Do not stop when script is loaded") do
|
113
112
|
options.nostop = true
|
114
113
|
end
|
115
114
|
opts.on("-nx", "Not run debugger initialization files (e.g. .rdebugrc") do
|
@@ -141,7 +140,7 @@ EOB
|
|
141
140
|
puts opts
|
142
141
|
exit
|
143
142
|
end
|
144
|
-
opts.on_tail("--version",
|
143
|
+
opts.on_tail("--version",
|
145
144
|
"Print the version") do
|
146
145
|
puts "ruby-debug #{Debugger::VERSION}"
|
147
146
|
exit
|
@@ -150,7 +149,7 @@ EOB
|
|
150
149
|
$VERBOSE = true
|
151
150
|
options.verbose_long = true
|
152
151
|
end
|
153
|
-
opts.on_tail("-v",
|
152
|
+
opts.on_tail("-v",
|
154
153
|
"Print version number, then turn on verbose mode") do
|
155
154
|
puts "ruby-debug #{Debugger::VERSION}"
|
156
155
|
$VERBOSE = true
|
@@ -183,7 +182,7 @@ if ARGV.empty?
|
|
183
182
|
puts 'Must specify a script to run'
|
184
183
|
exit(-1)
|
185
184
|
end
|
186
|
-
|
185
|
+
|
187
186
|
# save script name
|
188
187
|
Debugger::PROG_SCRIPT = ARGV.shift
|
189
188
|
|
@@ -204,19 +203,19 @@ Debugger.post_mortem if options.post_mortem
|
|
204
203
|
|
205
204
|
# Set up an interface to read commands from a debugger script file.
|
206
205
|
if options.script
|
207
|
-
Debugger.interface = Debugger::ScriptInterface.new(options.script,
|
206
|
+
Debugger.interface = Debugger::ScriptInterface.new(options.script,
|
208
207
|
STDOUT, true)
|
209
208
|
end
|
210
209
|
options.nostop = true if options.tracing
|
211
210
|
Debugger.tracing = options.tracing
|
212
211
|
|
213
212
|
# Make sure Ruby script syntax checks okay.
|
214
|
-
# Otherwise we get a load message that looks like rdebug has
|
215
|
-
# a problem.
|
213
|
+
# Otherwise we get a load message that looks like rdebug has
|
214
|
+
# a problem.
|
216
215
|
output = `ruby -c #{Debugger::PROG_SCRIPT} 2>&1`
|
217
216
|
if $?.exitstatus != 0 and RUBY_PLATFORM !~ /mswin/
|
218
217
|
puts output
|
219
|
-
exit $?.exitstatus
|
218
|
+
exit $?.exitstatus
|
220
219
|
end
|
221
220
|
|
222
221
|
# load initrc script (e.g. .rdebugrc)
|
@@ -236,7 +235,7 @@ if options.noquit
|
|
236
235
|
until Debugger.stop do end
|
237
236
|
end
|
238
237
|
debug_program(options)
|
239
|
-
print "The program finished.\n" unless
|
238
|
+
print "The program finished.\n" unless
|
240
239
|
Debugger.annotate.to_i > 1 # annotate has its own way
|
241
240
|
interface = Debugger::LocalInterface.new
|
242
241
|
# Not sure if ControlCommandProcessor is really the right
|
data/test/test-annotate.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
require 'test/unit'
|
3
3
|
require 'fileutils'
|
4
4
|
|
5
|
-
# begin require 'rubygems' rescue LoadError end
|
6
5
|
# require 'ruby-debug'; Debugger.start
|
7
6
|
|
8
7
|
# Test annotate handling.
|
@@ -15,9 +14,9 @@ class TestAnnotate < Test::Unit::TestCase
|
|
15
14
|
|
16
15
|
def test_basic
|
17
16
|
testname='annotate'
|
18
|
-
Dir.chdir(@@SRC_DIR) do
|
17
|
+
Dir.chdir(@@SRC_DIR) do
|
19
18
|
script = File.join('data', testname + '.cmd')
|
20
|
-
assert_equal(true,
|
19
|
+
assert_equal(true,
|
21
20
|
run_debugger(testname,
|
22
21
|
"--script #{script} -- ./gcd.rb 3 5"))
|
23
22
|
end
|
data/test/test-break-bad.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'test/unit'
|
3
3
|
|
4
|
-
# begin require 'rubygems' rescue LoadError end
|
5
4
|
# require 'ruby-debug'; Debugger.start
|
6
5
|
|
7
6
|
# Test (mostly) invalid breakpoint commands
|
@@ -15,19 +14,19 @@ class TestBadBreak < Test::Unit::TestCase
|
|
15
14
|
|
16
15
|
def test_basic
|
17
16
|
testname='break_bad'
|
18
|
-
Dir.chdir(@@SRC_DIR) do
|
17
|
+
Dir.chdir(@@SRC_DIR) do
|
19
18
|
script = File.join('data', testname + '.cmd')
|
20
19
|
assert_equal(true,
|
21
20
|
run_debugger(testname,
|
22
21
|
"--script #{script} -- ./gcd.rb 3 5"))
|
23
22
|
end
|
24
23
|
end
|
25
|
-
|
24
|
+
|
26
25
|
def test_break_loop
|
27
26
|
testname='break_loop_bug'
|
28
|
-
Dir.chdir(@@SRC_DIR) do
|
27
|
+
Dir.chdir(@@SRC_DIR) do
|
29
28
|
script = File.join('data', testname + '.cmd')
|
30
|
-
# FIXME: Issue #1
|
29
|
+
# FIXME: Issue #1
|
31
30
|
# assert_equal(true,
|
32
31
|
# run_debugger(testname,
|
33
32
|
# "--script #{script} -- ./bp_loop_issue.rb"))
|
data/test/test-breakpoints.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'test/unit'
|
3
3
|
|
4
|
-
# begin require 'rubygems' rescue LoadError end
|
5
4
|
# require 'ruby-debug'; Debugger.start
|
6
5
|
|
7
6
|
# Test breakpoint commands
|
@@ -15,9 +14,9 @@ class TestBreakpoints < Test::Unit::TestCase
|
|
15
14
|
|
16
15
|
def test_basic
|
17
16
|
testname='breakpoints'
|
18
|
-
Dir.chdir(@@SRC_DIR) do
|
17
|
+
Dir.chdir(@@SRC_DIR) do
|
19
18
|
script = File.join('data', testname + '.cmd')
|
20
|
-
assert_equal(true,
|
19
|
+
assert_equal(true,
|
21
20
|
run_debugger(testname,
|
22
21
|
"--script #{script} -- ./gcd.rb 3 5"))
|
23
22
|
end
|
data/test/test-catch.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'test/unit'
|
3
3
|
|
4
|
-
# begin require 'rubygems' rescue LoadError end
|
5
4
|
# require 'ruby-debug'; Debugger.start
|
6
5
|
|
7
6
|
# Test exception catching
|
@@ -15,7 +14,7 @@ class TestExceptionCatch < Test::Unit::TestCase
|
|
15
14
|
|
16
15
|
def test_basic
|
17
16
|
testname='catch'
|
18
|
-
Dir.chdir(@@SRC_DIR) do
|
17
|
+
Dir.chdir(@@SRC_DIR) do
|
19
18
|
script = File.join('data', testname + '.cmd')
|
20
19
|
assert_equal(true,
|
21
20
|
run_debugger(testname,
|