debase 0.2.3.beta2 → 0.2.3.beta3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +2 -1
- data/ext/debase_internals.c +17 -3
- data/ext/debase_internals.h +1 -6
- data/lib/debase.rb +2 -2
- data/lib/debase/version.rb +1 -1
- data/test/example/bootsnap/a.rb +5 -0
- data/test/example/bootsnap/bootsnap.rb +3 -0
- data/test/test_load.rb +34 -0
- metadata +32 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 54843a17de6b5740fea57e2c8ca1759d071748beed251dd0a13a4f3737dbd898
|
4
|
+
data.tar.gz: 6f60ddfba72e780a4da776300b35f9a0d66b077d09e8453ba586175a3175c0e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d6c8944d7e52516ac50f75b913f7680ff5af7b84563f4b12c74308d6b5677a0b629fd2d941f4a4b82d9374535a66ff5d2760c50e7e903cde1db40f40599a142
|
7
|
+
data.tar.gz: a007f10480e1f457a7aefd38ef947804dfc9712f41359c49ad2d6e45610ec489759467197e5e29f9214621fbd5dbdcabb9bef3e8114b3b24b19ee5c9a91696ce
|
data/.travis.yml
CHANGED
data/ext/debase_internals.c
CHANGED
@@ -637,7 +637,7 @@ Debase_enable_file_filtering(VALUE self, VALUE value)
|
|
637
637
|
return value;
|
638
638
|
}
|
639
639
|
|
640
|
-
#if RUBY_API_VERSION_CODE >= 20500
|
640
|
+
#if RUBY_API_VERSION_CODE >= 20500 && !(RUBY_RELEASE_YEAR == 2017 && RUBY_RELEASE_MONTH == 10 && RUBY_RELEASE_DAY == 10)
|
641
641
|
static const rb_iseq_t *
|
642
642
|
my_iseqw_check(VALUE iseqw)
|
643
643
|
{
|
@@ -654,17 +654,28 @@ Debase_enable_file_filtering(VALUE self, VALUE value)
|
|
654
654
|
}
|
655
655
|
|
656
656
|
static void
|
657
|
-
Debase_set_trace_flag_to_iseq(VALUE self, VALUE rb_iseq)
|
658
|
-
{
|
657
|
+
Debase_set_trace_flag_to_iseq(VALUE self, VALUE rb_iseq) {
|
659
658
|
if (!SPECIAL_CONST_P(rb_iseq) && RBASIC_CLASS(rb_iseq) == rb_cISeq) {
|
660
659
|
rb_iseq_t *iseq = my_iseqw_check(rb_iseq);
|
661
660
|
rb_iseq_trace_set(iseq, RUBY_EVENT_TRACEPOINT_ALL);
|
662
661
|
}
|
663
662
|
}
|
663
|
+
|
664
|
+
static void
|
665
|
+
Debase_unset_trace_flags(VALUE self, VALUE rb_iseq) {
|
666
|
+
if (!SPECIAL_CONST_P(rb_iseq) && RBASIC_CLASS(rb_iseq) == rb_cISeq) {
|
667
|
+
rb_iseq_t *iseq = my_iseqw_check(rb_iseq);
|
668
|
+
rb_iseq_trace_set(iseq, RUBY_EVENT_NONE);
|
669
|
+
}
|
670
|
+
}
|
664
671
|
#else
|
665
672
|
static void
|
666
673
|
Debase_set_trace_flag_to_iseq(VALUE self, VALUE rb_iseq) {
|
667
674
|
}
|
675
|
+
|
676
|
+
static void
|
677
|
+
Debase_unset_trace_flags(VALUE self, VALUE rb_iseq) {
|
678
|
+
}
|
668
679
|
#endif
|
669
680
|
|
670
681
|
static VALUE
|
@@ -712,6 +723,9 @@ Init_debase_internals()
|
|
712
723
|
rb_define_module_function(mDebase, "init_variables", Debase_init_variables, 0);
|
713
724
|
rb_define_module_function(mDebase, "set_trace_flag_to_iseq", Debase_set_trace_flag_to_iseq, 1);
|
714
725
|
|
726
|
+
//use only for tests
|
727
|
+
rb_define_module_function(mDebase, "unset_iseq_flags", Debase_unset_trace_flags, 1);
|
728
|
+
|
715
729
|
idAlive = rb_intern("alive?");
|
716
730
|
idAtLine = rb_intern("at_line");
|
717
731
|
idAtBreakpoint = rb_intern("at_breakpoint");
|
data/ext/debase_internals.h
CHANGED
@@ -2,12 +2,7 @@
|
|
2
2
|
#define DEBASE_INTERNALS
|
3
3
|
|
4
4
|
#include "ruby.h"
|
5
|
-
#include "
|
6
|
-
#include "version.h"
|
7
|
-
#include "iseq.h"
|
8
|
-
#include "vm_insnhelper.h"
|
9
|
-
#include "method.h"
|
10
|
-
#include <ruby/debug.h>
|
5
|
+
#include "ruby/debug.h"
|
11
6
|
|
12
7
|
typedef struct rb_trace_arg_struct rb_trace_point_t;
|
13
8
|
|
data/lib/debase.rb
CHANGED
@@ -30,7 +30,7 @@ module Debase
|
|
30
30
|
class << RubyVM::InstructionSequence
|
31
31
|
def self.prepend(mod, *smth)
|
32
32
|
super
|
33
|
-
if mod.to_s.include?
|
33
|
+
if mod.to_s.include?('Bootsnap') && RUBY_VERSION >= "2.5"
|
34
34
|
prepend InstructionSequenceMixin
|
35
35
|
end
|
36
36
|
end
|
@@ -107,7 +107,7 @@ module Debase
|
|
107
107
|
|
108
108
|
def do_set_flags(iseq)
|
109
109
|
Debugger.set_trace_flag_to_iseq(iseq)
|
110
|
-
iseq.each_child{|child_iseq| do_set_flags(child_iseq)}
|
110
|
+
iseq.each_child { |child_iseq| do_set_flags(child_iseq) } if iseq.respond_to? :each_child
|
111
111
|
end
|
112
112
|
end
|
113
113
|
end
|
data/lib/debase/version.rb
CHANGED
data/test/test_load.rb
CHANGED
@@ -3,6 +3,9 @@ require File.expand_path("helper", File.dirname(__FILE__))
|
|
3
3
|
|
4
4
|
# Test of Debugger.debug_load in C extension ruby_debug.so
|
5
5
|
class TestDebugLoad < Test::Unit::TestCase
|
6
|
+
|
7
|
+
self.test_order = :defined
|
8
|
+
|
6
9
|
class << self
|
7
10
|
def at_line(file, line)
|
8
11
|
@@at_line = [File.basename(file), line]
|
@@ -41,4 +44,35 @@ class TestDebugLoad < Test::Unit::TestCase
|
|
41
44
|
ensure
|
42
45
|
Debugger.stop if Debugger.started?
|
43
46
|
end
|
47
|
+
|
48
|
+
module MyBootsnap
|
49
|
+
def load_iseq(path)
|
50
|
+
iseq = RubyVM::InstructionSequence.compile_file(path)
|
51
|
+
|
52
|
+
Debugger.unset_iseq_flags(iseq)
|
53
|
+
iseq
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_bootsnap
|
58
|
+
@@at_line = nil
|
59
|
+
src_dir = File.dirname(__FILE__)
|
60
|
+
prog_script = File.join(src_dir, 'example', 'bootsnap', 'bootsnap.rb')
|
61
|
+
|
62
|
+
class << RubyVM::InstructionSequence
|
63
|
+
prepend MyBootsnap
|
64
|
+
end
|
65
|
+
bt = Debugger.debug_load(prog_script, true)
|
66
|
+
assert_equal(nil, bt)
|
67
|
+
assert_not_nil(@@at_line)
|
68
|
+
if RUBY_VERSION >= '2.5'
|
69
|
+
assert_equal(['debase.rb', 101], @@at_line)
|
70
|
+
end
|
71
|
+
|
72
|
+
assert(Debugger.started?)
|
73
|
+
Debugger.stop
|
74
|
+
|
75
|
+
class << RubyVM::InstructionSequence; self end.class_eval { undef_method :load_iseq }
|
76
|
+
|
77
|
+
end
|
44
78
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: debase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.3.
|
4
|
+
version: 0.2.3.beta3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dennis Ushakov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: debase-ruby_core_source
|
@@ -94,6 +94,8 @@ files:
|
|
94
94
|
- test/example/a/example.rb
|
95
95
|
- test/example/at-exit.rb
|
96
96
|
- test/example/b/example.rb
|
97
|
+
- test/example/bootsnap/a.rb
|
98
|
+
- test/example/bootsnap/bootsnap.rb
|
97
99
|
- test/example/bp_loop_issue.rb
|
98
100
|
- test/example/breakpoints-basename.rb
|
99
101
|
- test/example/brkpt-class-bug.rb
|
@@ -134,10 +136,35 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
136
|
- !ruby/object:Gem::Version
|
135
137
|
version: 1.3.1
|
136
138
|
requirements: []
|
137
|
-
|
138
|
-
rubygems_version: 2.6.10
|
139
|
+
rubygems_version: 3.0.1
|
139
140
|
signing_key:
|
140
141
|
specification_version: 4
|
141
142
|
summary: debase is a fast implementation of the standard Ruby debugger debug.rb for
|
142
143
|
Ruby 2.0
|
143
|
-
test_files:
|
144
|
+
test_files:
|
145
|
+
- test/example/a/example.rb
|
146
|
+
- test/example/at-exit.rb
|
147
|
+
- test/example/b/example.rb
|
148
|
+
- test/example/bootsnap/a.rb
|
149
|
+
- test/example/bootsnap/bootsnap.rb
|
150
|
+
- test/example/bp_loop_issue.rb
|
151
|
+
- test/example/breakpoints-basename.rb
|
152
|
+
- test/example/brkpt-class-bug.rb
|
153
|
+
- test/example/classes.rb
|
154
|
+
- test/example/dollar-0.rb
|
155
|
+
- test/example/except-bug1.rb
|
156
|
+
- test/example/file with space.rb
|
157
|
+
- test/example/gcd.rb
|
158
|
+
- test/example/info-var-bug.rb
|
159
|
+
- test/example/info-var-bug2.rb
|
160
|
+
- test/example/null.rb
|
161
|
+
- test/example/output.rb
|
162
|
+
- test/example/pm-bug.rb
|
163
|
+
- test/example/pm.rb
|
164
|
+
- test/example/raise.rb
|
165
|
+
- test/helper.rb
|
166
|
+
- test/test_base.rb
|
167
|
+
- test/test_breakpoints.rb
|
168
|
+
- test/test_catchpoint.rb
|
169
|
+
- test/test_load.rb
|
170
|
+
- test/test_reload_bug.rb
|