ruby-debug-base19x 0.11.30.pre2 → 0.11.30.pre3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|