ruby-debug-base 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/README +39 -0
- data/Rakefile +67 -82
- data/ext/extconf.rb +11 -8
- data/ext/ruby_debug.c +9 -12
- data/lib/ruby-debug-base.rb +2 -2
- data/lib/ruby-debug-base/version.rb +3 -0
- 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 +44 -0
- data/test/base/reload_bug.rb +2 -2
- metadata +51 -17
- data/VERSION +0 -3
- data/ext/win32/Makefile +0 -157
- data/ext/win32/breakpoint.o +0 -0
- data/ext/win32/ruby_debug.o +0 -0
- data/ext/win32/ruby_debug.so +0 -0
- data/lib/ChangeLog +0 -1162
data/AUTHORS
CHANGED
data/CHANGES
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
0.10.5
|
2
|
+
12/25/10
|
3
|
+
- Remove extraneous .RB files messing up Microsoft Windows
|
4
|
+
- Deprecate "set force". Use "set di[fferent].
|
5
|
+
- Moved to github.
|
6
|
+
- Merged JRuby extension.
|
7
|
+
- Moved ruby-debug-extra to a separate repository.
|
8
|
+
- JRuby: fixed race condition that was causing the debugger to hang:
|
9
|
+
http://youtrack.jetbrains.net/issue/RUBY-8123
|
10
|
+
https://github.com/ruby-debug/ruby-debug/issues/7
|
11
|
+
http://jira.codehaus.org/browse/JRUBY-6083
|
12
|
+
- JRuby: fixed stopping in wrong file with the same basename
|
13
|
+
- Use rake-compiler for building extensions
|
14
|
+
- Fix use of stale variables after restarting the debugger (#4)
|
15
|
+
- Use Travis for CI
|
16
|
+
- JRuby: Remove GPL'd linecache code (#3)
|
17
|
+
|
1
18
|
0.10.4
|
2
19
|
10/27/10
|
3
20
|
|
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
|
data/ext/extconf.rb
CHANGED
@@ -1,20 +1,23 @@
|
|
1
1
|
require "mkmf"
|
2
2
|
|
3
3
|
if RUBY_VERSION >= "1.9"
|
4
|
-
|
5
|
-
|
6
|
-
exit(1)
|
7
|
-
end
|
4
|
+
STDERR.print("Ruby version #{RUBY_VERSION} is too new\n")
|
5
|
+
exit(1)
|
8
6
|
elsif RUBY_VERSION >= "1.8"
|
9
7
|
if RUBY_RELEASE_DATE < "2005-03-22"
|
10
|
-
STDERR.print("Ruby
|
8
|
+
STDERR.print("Ruby release date #{RUBY_RELEASE_DATE} is too old\n")
|
11
9
|
exit(1)
|
12
10
|
end
|
13
11
|
else
|
14
|
-
STDERR.print("Ruby version is
|
12
|
+
STDERR.print("Ruby version is not compatible for this version.\n")
|
15
13
|
exit(1)
|
16
14
|
end
|
17
15
|
|
18
|
-
#
|
19
|
-
#
|
16
|
+
# Allow use customization of compile options. For example, the
|
17
|
+
# following lines could be put in config_options to to turn off
|
18
|
+
# optimization:
|
19
|
+
# $CFLAGS='-fPIC -fno-strict-aliasing -g3 -ggdb -O2 -fPIC'
|
20
|
+
config_file = File.join(File.dirname(__FILE__), 'config_options.rb')
|
21
|
+
load config_file if File.exist?(config_file)
|
22
|
+
|
20
23
|
create_makefile("ruby_debug")
|
data/ext/ruby_debug.c
CHANGED
@@ -6,8 +6,6 @@
|
|
6
6
|
#include <st.h>
|
7
7
|
#include <intern.h>
|
8
8
|
|
9
|
-
#define DEBUG_VERSION "0.10.4"
|
10
|
-
|
11
9
|
#ifdef _WIN32
|
12
10
|
struct FRAME {
|
13
11
|
VALUE self;
|
@@ -1061,6 +1059,9 @@ debug_stop(VALUE self)
|
|
1061
1059
|
locker = Qnil;
|
1062
1060
|
rdebug_breakpoints = Qnil;
|
1063
1061
|
rdebug_threads_tbl = Qnil;
|
1062
|
+
last_thread = Qnil;
|
1063
|
+
last_context = Qnil;
|
1064
|
+
last_debug_context = NULL;
|
1064
1065
|
|
1065
1066
|
return Qtrue;
|
1066
1067
|
}
|
@@ -1415,15 +1416,12 @@ debug_debug_load(int argc, VALUE *argv, VALUE self)
|
|
1415
1416
|
return errinfo;
|
1416
1417
|
}
|
1417
1418
|
|
1418
|
-
/* We
|
1419
|
-
*
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
if (start_count > 0) {
|
1425
|
-
debug_stop(self);
|
1426
|
-
}
|
1419
|
+
/* We don't want to stop the debugger yet, because the
|
1420
|
+
* user may have set breakpoints in at_exit blocks that
|
1421
|
+
* should be hit. But we don't want to step out into debugger
|
1422
|
+
* code either, so we reset stepping stop points here.
|
1423
|
+
*/
|
1424
|
+
reset_stepping_stop_points(debug_context);
|
1427
1425
|
|
1428
1426
|
return Qnil;
|
1429
1427
|
}
|
@@ -2262,7 +2260,6 @@ void
|
|
2262
2260
|
Init_ruby_debug()
|
2263
2261
|
{
|
2264
2262
|
mDebugger = rb_define_module("Debugger");
|
2265
|
-
rb_define_const(mDebugger, "VERSION", rb_str_new2(DEBUG_VERSION));
|
2266
2263
|
rb_define_module_function(mDebugger, "start_", debug_start, 0);
|
2267
2264
|
rb_define_module_function(mDebugger, "stop", debug_stop, 0);
|
2268
2265
|
rb_define_module_function(mDebugger, "started?", debug_is_started, 0);
|
data/lib/ruby-debug-base.rb
CHANGED
data/test/base/base.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
require
|
2
|
+
require File.expand_path("../../helper", __FILE__)
|
3
3
|
|
4
4
|
# Some tests of Debugger module in C extension ruby_debug
|
5
5
|
class TestRubyDebug < Test::Unit::TestCase
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
def test_version
|
7
|
+
assert(defined?(Debugger::VERSION))
|
8
|
+
end
|
9
9
|
|
10
10
|
# test current_context
|
11
11
|
def test_current_context
|
@@ -26,6 +26,7 @@ class TestRubyDebug < Test::Unit::TestCase
|
|
26
26
|
assert_equal(1, Debugger.current_context.stack_size)
|
27
27
|
assert_equal(TestRubyDebug, Debugger.current_context.frame_class)
|
28
28
|
assert_equal(false, Debugger.current_context.dead?, 'Not dead yet!')
|
29
|
+
ensure
|
29
30
|
Debugger.stop
|
30
31
|
assert_equal(false, Debugger.started?,
|
31
32
|
'Debugger should no longer be started.')
|
@@ -47,6 +48,7 @@ class TestRubyDebug < Test::Unit::TestCase
|
|
47
48
|
'There should only be one context.')
|
48
49
|
assert_equal(Array, a.class,
|
49
50
|
'Context should be an array.')
|
51
|
+
ensure
|
50
52
|
Debugger.stop
|
51
53
|
assert_equal(false, Debugger.started?,
|
52
54
|
'debugger should no longer be started.')
|
@@ -68,6 +70,7 @@ class TestRubyDebug < Test::Unit::TestCase
|
|
68
70
|
Debugger.remove_breakpoint(1)
|
69
71
|
assert_equal(0, Debugger.breakpoints.size,
|
70
72
|
'There should no longer be any breakpoints set.')
|
73
|
+
ensure
|
71
74
|
Debugger.stop
|
72
75
|
end
|
73
76
|
end
|