ruby-debug-base19x 0.11.30.pre2 → 0.11.30.pre3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ext/ruby_debug/extconf.rb +19 -11
- data/ext/ruby_debug/ruby_debug.c +30 -15
- metadata +10 -10
data/ext/ruby_debug/extconf.rb
CHANGED
@@ -2,23 +2,31 @@ require "mkmf"
|
|
2
2
|
require "ruby_core_source"
|
3
3
|
|
4
4
|
hdrs = proc {
|
5
|
-
|
6
|
-
|
5
|
+
begin
|
6
|
+
have_struct_member("rb_method_entry_t", "called_id", "method.h") or
|
7
|
+
have_struct_member("rb_control_frame_t", "method_id", "method.h")
|
8
|
+
end and
|
9
|
+
begin
|
10
|
+
have_func("rb_method_entry", "method.h") or
|
11
|
+
have_func("rb_method_node", "node.h")
|
12
|
+
end and
|
13
|
+
have_header("vm_core.h") and have_header("iseq.h") and have_header("insns.inc") and
|
7
14
|
have_header("insns_info.inc") and have_header("eval_intern.h")
|
15
|
+
if checking_for(checking_message("if rb_iseq_compile_with_option was added an argument filepath")) do
|
16
|
+
try_compile(<<SRC)
|
17
|
+
#include <ruby.h>
|
18
|
+
#include "vm_core.h"
|
19
|
+
extern VALUE rb_iseq_new_main(NODE *node, VALUE filename, VALUE filepath);
|
20
|
+
SRC
|
21
|
+
end
|
22
|
+
$defs << '-DRB_ISEQ_COMPILE_5ARGS'
|
23
|
+
end
|
8
24
|
}
|
9
25
|
|
10
|
-
if RUBY_VERSION == '1.9.1'
|
11
|
-
$CFLAGS << ' -DRUBY_VERSION_1_9_1'
|
12
|
-
end
|
13
|
-
|
14
|
-
if RUBY_REVISION >= 26959 # rb_iseq_compile_with_option was added an argument filepath
|
15
|
-
$CFLAGS << ' -DRB_ISEQ_COMPILE_6ARGS'
|
16
|
-
end
|
17
|
-
|
18
26
|
dir_config("ruby")
|
19
27
|
name = "ruby_debug"
|
20
28
|
if (ENV['rvm_ruby_string'])
|
21
|
-
dest_dir =
|
29
|
+
dest_dir = RbConfig::CONFIG["rubyhdrdir"]
|
22
30
|
with_cppflags("-I" + dest_dir) {
|
23
31
|
if hdrs.call
|
24
32
|
create_makefile(name)
|
data/ext/ruby_debug/ruby_debug.c
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
#include <insns_info.inc>
|
10
10
|
#include "ruby_debug.h"
|
11
11
|
|
12
|
-
#define DEBUG_VERSION "0.11.30.
|
12
|
+
#define DEBUG_VERSION "0.11.30.pre3"
|
13
13
|
|
14
14
|
#define FRAME_N(n) (&debug_context->frames[debug_context->stack_size-(n)-1])
|
15
15
|
#define GET_FRAME (FRAME_N(check_frame_number(debug_context, frame)))
|
@@ -20,12 +20,12 @@
|
|
20
20
|
|
21
21
|
#define STACK_SIZE_INCREMENT 128
|
22
22
|
|
23
|
-
|
23
|
+
int rb_vm_get_sourceline(const rb_control_frame_t *cfp); /* from vm.c */
|
24
24
|
/* from iseq.c */
|
25
|
-
#ifdef
|
26
|
-
|
25
|
+
#ifdef RB_ISEQ_COMPILE_5ARGS
|
26
|
+
VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE filepath, VALUE line, VALUE opt);
|
27
27
|
#else
|
28
|
-
|
28
|
+
VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE line, VALUE opt);
|
29
29
|
#endif
|
30
30
|
|
31
31
|
typedef struct {
|
@@ -137,7 +137,7 @@ real_class(VALUE klass)
|
|
137
137
|
inline static void *
|
138
138
|
ruby_method_ptr(VALUE class, ID meth_id)
|
139
139
|
{
|
140
|
-
#
|
140
|
+
#ifndef HAVE_RB_METHOD_ENTRY
|
141
141
|
NODE *body, *method;
|
142
142
|
st_lookup(RCLASS_M_TBL(class), meth_id, (st_data_t *)&body);
|
143
143
|
method = (NODE *)body->u2.value;
|
@@ -191,6 +191,20 @@ context_thread_0(debug_context_t *debug_context)
|
|
191
191
|
return id2ref(debug_context->thread_id);
|
192
192
|
}
|
193
193
|
|
194
|
+
static inline const rb_data_type_t *
|
195
|
+
threadptr_data_type(void)
|
196
|
+
{
|
197
|
+
static const rb_data_type_t *thread_data_type;
|
198
|
+
if (!thread_data_type) {
|
199
|
+
VALUE current_thread = rb_thread_current();
|
200
|
+
thread_data_type = RTYPEDDATA_TYPE(current_thread);
|
201
|
+
}
|
202
|
+
return thread_data_type;
|
203
|
+
}
|
204
|
+
|
205
|
+
#define ruby_threadptr_data_type *threadptr_data_type()
|
206
|
+
#define ruby_current_thread ((rb_thread_t *)RTYPEDDATA_DATA(rb_thread_current()))
|
207
|
+
|
194
208
|
static int
|
195
209
|
is_in_locked(VALUE thread_id)
|
196
210
|
{
|
@@ -687,7 +701,7 @@ create_catch_table(debug_context_t *debug_context, unsigned long cont)
|
|
687
701
|
GET_THREAD()->parse_in_eval++;
|
688
702
|
GET_THREAD()->mild_compile_error++;
|
689
703
|
/* compiling with option Qfalse (no options) prevents debug hook calls during this catch routine */
|
690
|
-
#ifdef
|
704
|
+
#ifdef RB_ISEQ_COMPILE_5ARGS
|
691
705
|
catch_table->iseq = rb_iseq_compile_with_option(
|
692
706
|
rb_str_new_cstr("begin\nend"), rb_str_new_cstr("(exception catcher)"), Qnil, INT2FIX(1), Qfalse);
|
693
707
|
#else
|
@@ -726,7 +740,7 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
726
740
|
char *file = (char*)rb_sourcefile();
|
727
741
|
int line = rb_sourceline();
|
728
742
|
int moved = 0;
|
729
|
-
#
|
743
|
+
#ifndef HAVE_RB_METHOD_ENTRY
|
730
744
|
NODE *node = NULL;
|
731
745
|
#else
|
732
746
|
rb_method_entry_t *me = NULL;
|
@@ -748,7 +762,7 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
748
762
|
|
749
763
|
if (mid == ID_ALLOCATOR) return;
|
750
764
|
|
751
|
-
#
|
765
|
+
#ifndef HAVE_RB_METHOD_ENTRY
|
752
766
|
node = rb_method_node(klass, mid);
|
753
767
|
#else
|
754
768
|
me = rb_method_entry(klass, mid);
|
@@ -861,6 +875,7 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
861
875
|
{
|
862
876
|
rb_control_frame_t *cfp = top_frame->info.runtime.cfp;
|
863
877
|
VALUE hit_count;
|
878
|
+
int c_hit_count;
|
864
879
|
rb_iseq_t *iseq = cfp->iseq;
|
865
880
|
|
866
881
|
if (iseq != NULL) {
|
@@ -870,7 +885,7 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
870
885
|
}
|
871
886
|
|
872
887
|
/* send catchpoint notification */
|
873
|
-
|
888
|
+
c_hit_count = FIX2INT(rb_hash_aref(rdebug_catchpoints, debug_context->catch_table.mod_name)) + 1;
|
874
889
|
hit_count = INT2FIX(c_hit_count);
|
875
890
|
rb_hash_aset(rdebug_catchpoints, debug_context->catch_table.mod_name, hit_count);
|
876
891
|
debug_context->stop_reason = CTX_STOP_CATCHPOINT;
|
@@ -963,7 +978,7 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
963
978
|
case RUBY_EVENT_C_RETURN:
|
964
979
|
{
|
965
980
|
/* note if a block is given we fall through! */
|
966
|
-
#
|
981
|
+
#ifndef HAVE_RB_METHOD_ENTRY
|
967
982
|
if(!node || !c_call_new_frame_p(klass, mid))
|
968
983
|
#else
|
969
984
|
if(!me || !c_call_new_frame_p(klass, mid))
|
@@ -999,6 +1014,10 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
999
1014
|
}
|
1000
1015
|
case RUBY_EVENT_RAISE:
|
1001
1016
|
{
|
1017
|
+
VALUE ancestors;
|
1018
|
+
VALUE expn_class, aclass;
|
1019
|
+
int i;
|
1020
|
+
|
1002
1021
|
if (CTX_FL_TEST(debug_context, CTX_FL_CATCHING)) {
|
1003
1022
|
/* we're re-raising exception after processing line event,
|
1004
1023
|
now allow the next exception to be caught, don't setup catchers */
|
@@ -1006,10 +1025,6 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
1006
1025
|
break;
|
1007
1026
|
}
|
1008
1027
|
|
1009
|
-
VALUE ancestors;
|
1010
|
-
VALUE expn_class, aclass;
|
1011
|
-
int i;
|
1012
|
-
|
1013
1028
|
if(debug == Qtrue) {
|
1014
1029
|
fprintf(stderr, "stack_size %d\n", debug_context->stack_size);
|
1015
1030
|
for (i = 0; i < debug_context->stack_size; i++) {
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-debug-base19x
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.30.
|
4
|
+
version: 0.11.30.pre3
|
5
5
|
prerelease: 8
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-09-28 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: columnize
|
16
|
-
requirement: &
|
16
|
+
requirement: &70263133374820 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.3.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70263133374820
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: ruby_core_source
|
27
|
-
requirement: &
|
27
|
+
requirement: &70263133374340 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.1.4
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70263133374340
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: linecache19
|
38
|
-
requirement: &
|
38
|
+
requirement: &70263133373860 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.5.11
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70263133373860
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &70263133373400 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 0.8.1
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70263133373400
|
58
58
|
description: ! 'ruby-debug is a fast implementation of the standard Ruby debugger
|
59
59
|
debug.rb.
|
60
60
|
|