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 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
@@ -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
- 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
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
- name = "ruby_debug"
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: For Ruby 1.9 installation instructions, please see:\n\n")
41
- STDERR.print(" http://wiki.github.com/mark-moseley/ruby-debug\n\n")
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
@@ -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.pre10"
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 RB_ISEQ_COMPILE_5ARGS
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 __WIN32__
530
+ #ifdef _WIN32
525
531
  return filename_cmp_impl(source, file);
526
- #endif
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 RB_ISEQ_COMPILE_5ARGS
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
- rb_control_frame_t *cfp = top_frame->info.runtime.cfp;
1075
- rb_iseq_t *iseq = cfp->iseq;
1059
+ VALUE hit_count;
1060
+ int c_hit_count;
1076
1061
 
1077
- debug_context->catch_table.mod_name = mod_name;
1078
- debug_context->catch_table.errinfo = rb_errinfo();
1079
- CTX_FL_SET(debug_context, CTX_FL_CATCHING);
1080
- if (iseq != NULL) {
1081
-
1082
- /* save the current catch table */
1083
- debug_context->catch_table.old_catch_table_size = iseq->catch_table_size;
1084
- debug_context->catch_table.old_catch_table = iseq->catch_table;
1085
-
1086
-
1087
- /* create a new catch table to catch this exception, and put it in the current iseq */
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
  }
@@ -45,7 +45,11 @@ typedef struct {
45
45
  union {
46
46
  struct {
47
47
  rb_control_frame_t *cfp;
48
- VALUE *bp;
48
+ #if VM_DEBUG_BP_CHECK
49
+ VALUE *bp_check;
50
+ #else
51
+ VALUE *bp;
52
+ #endif
49
53
  struct rb_iseq_struct *block_iseq;
50
54
  VALUE *block_pc;
51
55
  VALUE *last_pc;
@@ -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.pre10
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: 2012-02-07 00:00:00.000000000 Z
12
+ date: 2013-03-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: columnize
16
- requirement: &70196555532780 !ruby/object:Gem::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: 0.3.1
21
+ version: 1.1.4
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70196555532780
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: 0.1.4
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: *70196555530700
29
+ version: 1.1.4
36
30
  - !ruby/object:Gem::Dependency
37
- name: linecache19
38
- requirement: &70196555529100 !ruby/object:Gem::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.5.11
37
+ version: 0.8.1
44
38
  type: :runtime
45
39
  prerelease: false
46
- version_requirements: *70196555529100
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.10
95
+ rubygems_version: 1.8.25
108
96
  signing_key:
109
97
  specification_version: 3
110
98
  summary: Fast Ruby debugger - core component