ruby-debug-base19x 0.11.30.pre10 → 0.11.30.pre12
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +12 -0
- data/ext/ruby_debug/extconf.rb +29 -24
- data/ext/ruby_debug/ruby_debug.c +72 -63
- data/ext/ruby_debug/ruby_debug.h +5 -1
- data/lib/ruby-debug-base.rb +0 -14
- metadata +12 -24
data/Rakefile
CHANGED
@@ -25,3 +25,15 @@ task :test_base => :lib do
|
|
25
25
|
t.verbose = true
|
26
26
|
end
|
27
27
|
end
|
28
|
+
|
29
|
+
desc "Remove built files"
|
30
|
+
task :clean do
|
31
|
+
cd "ext/ruby_debug" do
|
32
|
+
if File.exists?("Makefile")
|
33
|
+
sh "make clean"
|
34
|
+
rm "Makefile"
|
35
|
+
end
|
36
|
+
derived_files = Dir.glob(".o") + Dir.glob("*.so") + Dir.glob("*.bundle")
|
37
|
+
rm derived_files unless derived_files.empty?
|
38
|
+
end
|
39
|
+
end
|
data/ext/ruby_debug/extconf.rb
CHANGED
@@ -1,8 +1,22 @@
|
|
1
|
+
# autodetect ruby headers
|
2
|
+
unless ARGV.any? {|arg| arg.include?('--with-ruby-include') }
|
3
|
+
require 'rbconfig'
|
4
|
+
bindir = RbConfig::CONFIG['bindir']
|
5
|
+
if bindir =~ %r{(^.*/\.rbenv/versions)/([^/]+)/bin$}
|
6
|
+
ruby_include = "#{$1}/#{$2}/include/ruby-1.9.1/ruby-#{$2}"
|
7
|
+
ARGV << "--with-ruby-include=#{ruby_include}"
|
8
|
+
elsif bindir =~ %r{(^.*/\.rvm/rubies)/([^/]+)/bin$}
|
9
|
+
ruby_include = "#{$1}/#{$2}/include/ruby-1.9.1/#{$2}"
|
10
|
+
ruby_include = "#{ENV['rvm_path']}/src/#{$2}" unless File.exist?(ruby_include)
|
11
|
+
ARGV << "--with-ruby-include=#{ruby_include}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
1
15
|
require "mkmf"
|
2
|
-
require "ruby_core_source"
|
16
|
+
require "debugger/ruby_core_source"
|
3
17
|
|
4
18
|
hdrs = proc {
|
5
|
-
begin
|
19
|
+
result = begin
|
6
20
|
have_struct_member("rb_method_entry_t", "called_id", "method.h") or
|
7
21
|
have_struct_member("rb_control_frame_t", "method_id", "method.h")
|
8
22
|
end and
|
@@ -12,33 +26,24 @@ hdrs = proc {
|
|
12
26
|
end and
|
13
27
|
have_header("vm_core.h") and have_header("iseq.h") and have_header("insns.inc") and
|
14
28
|
have_header("insns_info.inc") and have_header("eval_intern.h")
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
29
|
+
have_func("rb_iseq_new_main", "vm_core.h")
|
30
|
+
have_func("rb_iseq_compile_on_base", "vm_core.h")
|
31
|
+
have_struct_member("rb_iseq_t", "location", "vm_core.h") or have_struct_member("rb_iseq_t", "filename", "vm_core.h")
|
32
|
+
have_struct_member("rb_iseq_t", "line_info_size", "vm_core.h") or have_struct_member("rb_iseq_t", "insn_info_size", "vm_core.h")
|
33
|
+
have_struct_member("rb_control_frame_t", "ep", "vm_core.h") or
|
34
|
+
have_struct_member("rb_control_frame_t", "dfp", "vm_core.h")
|
35
|
+
have_struct_member("rb_control_frame_t", "bp", "vm_core.h")
|
36
|
+
result
|
24
37
|
}
|
25
38
|
|
39
|
+
$defs << "-O0"
|
40
|
+
|
26
41
|
dir_config("ruby")
|
27
|
-
|
28
|
-
if (ENV['rvm_ruby_string'])
|
29
|
-
dest_dir = RbConfig::CONFIG["rubyhdrdir"]
|
30
|
-
with_cppflags("-I" + dest_dir) {
|
31
|
-
if hdrs.call
|
32
|
-
create_makefile(name)
|
33
|
-
exit 0
|
34
|
-
end
|
35
|
-
}
|
36
|
-
end
|
37
|
-
if !Ruby_core_source::create_makefile_with_core(hdrs, name)
|
42
|
+
if !Debugger::RubyCoreSource.create_makefile_with_core(hdrs, "ruby_debug")
|
38
43
|
STDERR.print("Makefile creation failed\n")
|
39
44
|
STDERR.print("*************************************************************\n\n")
|
40
|
-
STDERR.print(" NOTE:
|
41
|
-
STDERR.print("
|
45
|
+
STDERR.print(" NOTE: If your headers were not found, try passing\n")
|
46
|
+
STDERR.print(" --with-ruby-include=PATH_TO_HEADERS \n\n")
|
42
47
|
STDERR.print("*************************************************************\n\n")
|
43
48
|
exit(1)
|
44
49
|
end
|
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.pre12"
|
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)))
|
@@ -22,7 +22,9 @@
|
|
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
|
25
|
+
#ifdef HAVE_RB_ISEQ_COMPILE_ON_BASE
|
26
|
+
VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE absolute_path, VALUE line, rb_block_t *base_block, VALUE opt);
|
27
|
+
#elif HAVE_RB_ISEQ_NEW_MAIN
|
26
28
|
VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE filepath, VALUE line, VALUE opt);
|
27
29
|
#else
|
28
30
|
VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE line, VALUE opt);
|
@@ -502,7 +504,11 @@ save_call_frame(rb_event_flag_t _event, debug_context_t *debug_context, VALUE se
|
|
502
504
|
debug_frame->arg_ary = Qnil;
|
503
505
|
debug_frame->argc = GET_THREAD()->cfp->iseq->argc;
|
504
506
|
debug_frame->info.runtime.cfp = GET_THREAD()->cfp;
|
507
|
+
#if VM_DEBUG_BP_CHECK
|
508
|
+
debug_frame->info.runtime.bp_check = GET_THREAD()->cfp->bp_check;
|
509
|
+
#else
|
505
510
|
debug_frame->info.runtime.bp = GET_THREAD()->cfp->bp;
|
511
|
+
#endif
|
506
512
|
debug_frame->info.runtime.block_iseq = GET_THREAD()->cfp->block_iseq;
|
507
513
|
debug_frame->info.runtime.block_pc = NULL;
|
508
514
|
debug_frame->info.runtime.last_pc = GET_THREAD()->cfp->pc;
|
@@ -521,9 +527,9 @@ filename_cmp_impl(VALUE source, char *file);
|
|
521
527
|
|
522
528
|
int
|
523
529
|
filename_cmp(VALUE source, char *file) {
|
524
|
-
#ifdef
|
530
|
+
#ifdef _WIN32
|
525
531
|
return filename_cmp_impl(source, file);
|
526
|
-
#
|
532
|
+
#else
|
527
533
|
|
528
534
|
if (!RTEST(resolve_symlinks)) {
|
529
535
|
return filename_cmp_impl(source, file);
|
@@ -547,6 +553,7 @@ filename_cmp(VALUE source, char *file) {
|
|
547
553
|
return result;
|
548
554
|
}
|
549
555
|
#endif
|
556
|
+
#endif
|
550
557
|
}
|
551
558
|
|
552
559
|
int
|
@@ -704,7 +711,10 @@ create_catch_table(debug_context_t *debug_context, unsigned long cont)
|
|
704
711
|
GET_THREAD()->parse_in_eval++;
|
705
712
|
GET_THREAD()->mild_compile_error++;
|
706
713
|
/* compiling with option Qfalse (no options) prevents debug hook calls during this catch routine */
|
707
|
-
#ifdef
|
714
|
+
#ifdef HAVE_RB_ISEQ_COMPILE_ON_BASE
|
715
|
+
catch_table->iseq = rb_iseq_compile_with_option(
|
716
|
+
rb_str_new_cstr("begin\nend"), rb_str_new_cstr("(exception catcher)"), Qnil, INT2FIX(1), NULL, Qfalse);
|
717
|
+
#elif HAVE_RB_ISEQ_NEW_MAIN
|
708
718
|
catch_table->iseq = rb_iseq_compile_with_option(
|
709
719
|
rb_str_new_cstr("begin\nend"), rb_str_new_cstr("(exception catcher)"), Qnil, INT2FIX(1), Qfalse);
|
710
720
|
#else
|
@@ -723,6 +733,7 @@ create_catch_table(debug_context_t *debug_context, unsigned long cont)
|
|
723
733
|
return(catch_table);
|
724
734
|
}
|
725
735
|
|
736
|
+
#ifdef RUBY_EVENT_VM
|
726
737
|
static int
|
727
738
|
set_thread_event_flag_i(st_data_t key, st_data_t val, st_data_t flag)
|
728
739
|
{
|
@@ -733,6 +744,7 @@ set_thread_event_flag_i(st_data_t key, st_data_t val, st_data_t flag)
|
|
733
744
|
|
734
745
|
return(ST_CONTINUE);
|
735
746
|
}
|
747
|
+
#endif
|
736
748
|
|
737
749
|
static void
|
738
750
|
debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE klass)
|
@@ -757,8 +769,9 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
757
769
|
mid = iseq->defined_method_id;
|
758
770
|
klass = iseq->klass;
|
759
771
|
}
|
760
|
-
|
772
|
+
#ifdef ID_ALLOCATOR
|
761
773
|
if (mid == ID_ALLOCATOR) return;
|
774
|
+
#endif
|
762
775
|
|
763
776
|
/* return if thread is marked as 'ignored'.
|
764
777
|
debugger's threads are marked this way
|
@@ -805,13 +818,19 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
805
818
|
debug_context->old_iseq_catch = NULL;
|
806
819
|
}
|
807
820
|
|
821
|
+
#ifdef RUBY_EVENT_VM
|
808
822
|
/* make sure all threads have event flag set so we'll get its events */
|
809
823
|
st_foreach(thread->vm->living_threads, set_thread_event_flag_i, 0);
|
824
|
+
#endif
|
810
825
|
|
811
826
|
/* remove any frames that are now out of scope */
|
812
827
|
while(debug_context->stack_size > 0)
|
813
828
|
{
|
829
|
+
#if VM_DEBUG_BP_CHECK
|
830
|
+
if (debug_context->frames[debug_context->stack_size - 1].info.runtime.bp_check <= thread->cfp->bp_check)
|
831
|
+
#else
|
814
832
|
if (debug_context->frames[debug_context->stack_size - 1].info.runtime.bp <= thread->cfp->bp)
|
833
|
+
#endif
|
815
834
|
break;
|
816
835
|
debug_context->stack_size--;
|
817
836
|
}
|
@@ -859,37 +878,6 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
859
878
|
{
|
860
879
|
case RUBY_EVENT_LINE:
|
861
880
|
{
|
862
|
-
if (CTX_FL_TEST(debug_context, CTX_FL_CATCHING))
|
863
|
-
{
|
864
|
-
debug_frame_t *top_frame = get_top_frame(debug_context);
|
865
|
-
|
866
|
-
if (top_frame != NULL)
|
867
|
-
{
|
868
|
-
rb_control_frame_t *cfp = top_frame->info.runtime.cfp;
|
869
|
-
VALUE hit_count;
|
870
|
-
int c_hit_count;
|
871
|
-
rb_iseq_t *iseq = cfp->iseq;
|
872
|
-
|
873
|
-
if (iseq != NULL) {
|
874
|
-
/* restore the proper catch table */
|
875
|
-
iseq->catch_table_size = debug_context->catch_table.old_catch_table_size;
|
876
|
-
iseq->catch_table = debug_context->catch_table.old_catch_table;
|
877
|
-
}
|
878
|
-
|
879
|
-
/* send catchpoint notification */
|
880
|
-
c_hit_count = FIX2INT(rb_hash_aref(rdebug_catchpoints, debug_context->catch_table.mod_name)) + 1;
|
881
|
-
hit_count = INT2FIX(c_hit_count);
|
882
|
-
rb_hash_aset(rdebug_catchpoints, debug_context->catch_table.mod_name, hit_count);
|
883
|
-
debug_context->stop_reason = CTX_STOP_CATCHPOINT;
|
884
|
-
rb_funcall(context, idAtCatchpoint, 1, debug_context->catch_table.errinfo);
|
885
|
-
if(self && binding == Qnil)
|
886
|
-
binding = create_binding(self);
|
887
|
-
save_top_binding(debug_context, binding);
|
888
|
-
call_at_line(context, debug_context, rb_str_new2(top_frame->file), INT2FIX(top_frame->line));
|
889
|
-
}
|
890
|
-
|
891
|
-
break;
|
892
|
-
}
|
893
881
|
if(debug_context->stack_size == 0 ||
|
894
882
|
get_top_frame(debug_context)->info.runtime.block_iseq != thread->cfp->block_iseq ||
|
895
883
|
get_top_frame(debug_context)->info.runtime.cfp->iseq != thread->cfp->iseq)
|
@@ -987,7 +975,11 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
987
975
|
while(debug_context->stack_size > 0)
|
988
976
|
{
|
989
977
|
debug_context->stack_size--;
|
978
|
+
#if VM_DEBUG_BP_CHECK
|
979
|
+
if (debug_context->frames[debug_context->stack_size].info.runtime.bp_check <= GET_THREAD()->cfp->bp_check)
|
980
|
+
#else
|
990
981
|
if (debug_context->frames[debug_context->stack_size].info.runtime.bp <= GET_THREAD()->cfp->bp)
|
982
|
+
#endif
|
991
983
|
break;
|
992
984
|
}
|
993
985
|
CTX_FL_SET(debug_context, CTX_FL_ENABLE_BKPT);
|
@@ -1006,13 +998,6 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
1006
998
|
VALUE expn_class, aclass;
|
1007
999
|
int i;
|
1008
1000
|
|
1009
|
-
if (CTX_FL_TEST(debug_context, CTX_FL_CATCHING)) {
|
1010
|
-
/* we're re-raising exception after processing line event,
|
1011
|
-
now allow the next exception to be caught, don't setup catchers */
|
1012
|
-
CTX_FL_UNSET(debug_context, CTX_FL_CATCHING);
|
1013
|
-
break;
|
1014
|
-
}
|
1015
|
-
|
1016
1001
|
if(debug == Qtrue) {
|
1017
1002
|
fprintf(stderr, "stack_size %d\n", debug_context->stack_size);
|
1018
1003
|
for (i = 0; i < debug_context->stack_size; i++) {
|
@@ -1071,25 +1056,20 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
1071
1056
|
if (hit_count != Qnil)
|
1072
1057
|
{
|
1073
1058
|
debug_frame_t *top_frame = get_top_frame(debug_context);
|
1074
|
-
|
1075
|
-
|
1059
|
+
VALUE hit_count;
|
1060
|
+
int c_hit_count;
|
1076
1061
|
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
iseq->catch_table_size = 1;
|
1089
|
-
iseq->catch_table =
|
1090
|
-
create_catch_table(debug_context, top_frame->info.runtime.last_pc - cfp->iseq->iseq_encoded - insn_len(BIN(trace)));
|
1091
|
-
break;
|
1092
|
-
}
|
1062
|
+
/* send catchpoint notification */
|
1063
|
+
hit_count = rb_hash_aref(rdebug_catchpoints, mod_name);
|
1064
|
+
c_hit_count = (hit_count != Qnil ? FIX2INT(hit_count) : 0) + 1;
|
1065
|
+
hit_count = INT2FIX(c_hit_count);
|
1066
|
+
rb_hash_aset(rdebug_catchpoints, mod_name, hit_count);
|
1067
|
+
debug_context->stop_reason = CTX_STOP_CATCHPOINT;
|
1068
|
+
rb_funcall(context, idAtCatchpoint, 1, rb_errinfo());
|
1069
|
+
if(self && binding == Qnil)
|
1070
|
+
binding = create_binding(self);
|
1071
|
+
save_top_binding(debug_context, binding);
|
1072
|
+
call_at_line(context, debug_context, rb_str_new2(top_frame->file), INT2FIX(top_frame->line));
|
1093
1073
|
}
|
1094
1074
|
}
|
1095
1075
|
|
@@ -1931,8 +1911,11 @@ copy_scalar_args(debug_frame_t *debug_frame)
|
|
1931
1911
|
for (i = 0; i < iseq->argc; i++)
|
1932
1912
|
{
|
1933
1913
|
if (!rb_is_local_id(iseq->local_table[i])) continue; /* skip flip states */
|
1934
|
-
|
1914
|
+
#ifdef HAVE_RB_CONTROL_FRAME_T_EP
|
1915
|
+
val = *(cfp->ep - iseq->local_size + i);
|
1916
|
+
#else
|
1935
1917
|
val = *(cfp->dfp - iseq->local_size + i);
|
1918
|
+
#endif
|
1936
1919
|
|
1937
1920
|
if (arg_value_is_small(val))
|
1938
1921
|
rb_ary_push(debug_frame->arg_ary, val);
|
@@ -1993,7 +1976,11 @@ context_copy_locals(debug_context_t *debug_context, debug_frame_t *debug_frame,
|
|
1993
1976
|
{
|
1994
1977
|
VALUE str = rb_id2str(iseq->local_table[i]);
|
1995
1978
|
if (str != 0)
|
1979
|
+
#ifdef HAVE_RB_CONTROL_FRAME_T_EP
|
1980
|
+
rb_hash_aset(hash, str, *(cfp->ep - iseq->local_size + i));
|
1981
|
+
#else
|
1996
1982
|
rb_hash_aset(hash, str, *(cfp->dfp - iseq->local_size + i));
|
1983
|
+
#endif
|
1997
1984
|
}
|
1998
1985
|
}
|
1999
1986
|
|
@@ -2011,7 +1998,11 @@ context_copy_locals(debug_context_t *debug_context, debug_frame_t *debug_frame,
|
|
2011
1998
|
{
|
2012
1999
|
VALUE str = rb_id2str(iseq->local_table[i]);
|
2013
2000
|
if (str != 0)
|
2001
|
+
#ifdef HAVE_RB_CONTROL_FRAME_T_EP
|
2002
|
+
rb_hash_aset(hash, str, *(block_frame->ep - iseq->local_table_size + i - 1));
|
2003
|
+
#else
|
2014
2004
|
rb_hash_aset(hash, str, *(block_frame->dfp - iseq->local_table_size + i - 1));
|
2005
|
+
#endif
|
2015
2006
|
}
|
2016
2007
|
return(hash);
|
2017
2008
|
}
|
@@ -2478,11 +2469,24 @@ context_jump(VALUE self, VALUE line, VALUE file)
|
|
2478
2469
|
/* find target frame to jump to */
|
2479
2470
|
while (RUBY_VM_VALID_CONTROL_FRAME_P(cfp, cfp_end))
|
2480
2471
|
{
|
2472
|
+
#ifdef HAVE_RB_ISEQ_T_LOCATION
|
2473
|
+
if ((cfp->iseq != NULL) && (rb_str_cmp(file, cfp->iseq->location.path) == 0))
|
2474
|
+
#else
|
2481
2475
|
if ((cfp->iseq != NULL) && (rb_str_cmp(file, cfp->iseq->filename) == 0))
|
2476
|
+
#endif
|
2482
2477
|
{
|
2478
|
+
#ifdef HAVE_RB_ISEQ_T_LINE_INFO_SIZE
|
2479
|
+
for (i = 0; i < cfp->iseq->line_info_size; i++)
|
2480
|
+
#else
|
2483
2481
|
for (i = 0; i < cfp->iseq->insn_info_size; i++)
|
2482
|
+
#endif
|
2484
2483
|
{
|
2484
|
+
#ifdef HAVE_RB_ISEQ_T_LINE_INFO_SIZE
|
2485
|
+
if (cfp->iseq->line_info_table[i].line_no != line)
|
2486
|
+
#else
|
2485
2487
|
if (cfp->iseq->insn_info_table[i].line_no != line)
|
2488
|
+
#endif
|
2489
|
+
|
2486
2490
|
continue;
|
2487
2491
|
|
2488
2492
|
/* hijack the currently running code so that we can change the frame PC */
|
@@ -2492,8 +2496,13 @@ context_jump(VALUE self, VALUE line, VALUE file)
|
|
2492
2496
|
cfp_start->pc[1] = (VALUE)do_jump;
|
2493
2497
|
|
2494
2498
|
debug_context->jump_cfp = cfp;
|
2499
|
+
#ifdef HAVE_RB_ISEQ_T_LINE_INFO_SIZE
|
2500
|
+
debug_context->jump_pc =
|
2501
|
+
cfp->iseq->iseq_encoded + cfp->iseq->line_info_table[i].position;
|
2502
|
+
#else
|
2495
2503
|
debug_context->jump_pc =
|
2496
2504
|
cfp->iseq->iseq_encoded + cfp->iseq->insn_info_table[i].position;
|
2505
|
+
#endif
|
2497
2506
|
|
2498
2507
|
return(INT2FIX(0)); /* success */
|
2499
2508
|
}
|
data/ext/ruby_debug/ruby_debug.h
CHANGED
data/lib/ruby-debug-base.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'ruby_debug'
|
2
2
|
require 'rubygems'
|
3
|
-
require 'linecache19'
|
4
3
|
|
5
4
|
module Debugger
|
6
5
|
|
@@ -90,19 +89,6 @@ module Debugger
|
|
90
89
|
end
|
91
90
|
context
|
92
91
|
end
|
93
|
-
|
94
|
-
def source_reload
|
95
|
-
LineCache::clear_file_cache
|
96
|
-
end
|
97
|
-
|
98
|
-
# Get line +line_number+ from file named +filename+. Return "\n"
|
99
|
-
# there was a problem. Leaking blanks are stripped off.
|
100
|
-
def line_at(filename, line_number) # :nodoc:
|
101
|
-
@reload_on_change=nil unless defined?(@reload_on_change)
|
102
|
-
line = LineCache::getline(filename, line_number, @reload_on_change)
|
103
|
-
return "\n" unless line
|
104
|
-
return "#{line.gsub(/^\s+/, '').chomp}\n"
|
105
|
-
end
|
106
92
|
|
107
93
|
#
|
108
94
|
# Activates the post-mortem mode. There are two ways of using it:
|
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.pre12
|
5
5
|
prerelease: 8
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,52 +9,40 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-03-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement:
|
15
|
+
name: debugger-ruby_core_source
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 1.1.4
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: ruby_core_source
|
27
|
-
requirement: &70196555530700 !ruby/object:Gem::Requirement
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
25
|
none: false
|
29
26
|
requirements:
|
30
27
|
- - ! '>='
|
31
28
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
33
|
-
type: :runtime
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *70196555530700
|
29
|
+
version: 1.1.4
|
36
30
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement:
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
39
33
|
none: false
|
40
34
|
requirements:
|
41
35
|
- - ! '>='
|
42
36
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.
|
37
|
+
version: 0.8.1
|
44
38
|
type: :runtime
|
45
39
|
prerelease: false
|
46
|
-
version_requirements:
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: rake
|
49
|
-
requirement: &70196555527340 !ruby/object:Gem::Requirement
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
41
|
none: false
|
51
42
|
requirements:
|
52
43
|
- - ! '>='
|
53
44
|
- !ruby/object:Gem::Version
|
54
45
|
version: 0.8.1
|
55
|
-
type: :runtime
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *70196555527340
|
58
46
|
description: ! 'ruby-debug is a fast implementation of the standard Ruby debugger
|
59
47
|
debug.rb.
|
60
48
|
|
@@ -104,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
92
|
version: 1.3.1
|
105
93
|
requirements: []
|
106
94
|
rubyforge_project: ruby-debug19
|
107
|
-
rubygems_version: 1.8.
|
95
|
+
rubygems_version: 1.8.25
|
108
96
|
signing_key:
|
109
97
|
specification_version: 3
|
110
98
|
summary: Fast Ruby debugger - core component
|