ruby-debug 0.4.1-mswin32 → 0.4.2-mswin32
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/CHANGES +5 -0
- data/Rakefile +20 -3
- data/bin/rdebug +1 -1
- data/ext/ruby_debug.c +286 -28
- data/lib/ruby-debug.rb +38 -7
- data/lib/ruby-debug/command.rb +1 -1
- data/lib/ruby-debug/commands/breakpoints.rb +6 -7
- data/lib/ruby-debug/commands/catchpoint.rb +1 -1
- data/lib/ruby-debug/commands/control.rb +2 -2
- data/lib/ruby-debug/commands/display.rb +4 -4
- data/lib/ruby-debug/commands/eval.rb +2 -2
- data/lib/ruby-debug/commands/frame.rb +4 -4
- data/lib/ruby-debug/commands/help.rb +1 -1
- data/lib/ruby-debug/commands/list.rb +1 -1
- data/lib/ruby-debug/commands/method.rb +1 -1
- data/lib/ruby-debug/commands/script.rb +2 -2
- data/lib/ruby-debug/commands/stepping.rb +4 -4
- data/lib/ruby-debug/commands/threads.rb +6 -6
- data/lib/ruby-debug/commands/tmate.rb +1 -1
- data/lib/ruby-debug/commands/trace.rb +1 -1
- data/lib/ruby-debug/commands/variables.rb +5 -5
- data/lib/ruby-debug/interface.rb +3 -3
- data/lib/ruby-debug/lock.rb +1 -1
- data/lib/ruby-debug/processor.rb +4 -4
- data/lib/ruby_debug.so +0 -0
- metadata +3 -3
data/CHANGES
CHANGED
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ require 'rake/rdoctask'
|
|
5
5
|
SO_NAME = "ruby_debug.so"
|
6
6
|
|
7
7
|
# ------- Default Package ----------
|
8
|
-
RUBY_DEBUG_VERSION = "0.4.
|
8
|
+
RUBY_DEBUG_VERSION = "0.4.2"
|
9
9
|
|
10
10
|
FILES = FileList[
|
11
11
|
'Rakefile',
|
@@ -14,6 +14,7 @@ FILES = FileList[
|
|
14
14
|
'CHANGES',
|
15
15
|
'lib/**/*',
|
16
16
|
'ext/*',
|
17
|
+
'doc/*',
|
17
18
|
'bin/*'
|
18
19
|
]
|
19
20
|
|
@@ -45,7 +46,7 @@ EOF
|
|
45
46
|
spec.rubyforge_project = 'ruby-debug'
|
46
47
|
|
47
48
|
# rdoc
|
48
|
-
spec.has_rdoc =
|
49
|
+
spec.has_rdoc = true
|
49
50
|
end
|
50
51
|
|
51
52
|
# Rake task to build the default package
|
@@ -99,4 +100,20 @@ task :clean do
|
|
99
100
|
rm "Makefile"
|
100
101
|
end
|
101
102
|
end
|
102
|
-
end
|
103
|
+
end
|
104
|
+
|
105
|
+
# --------- RDoc Documentation ------
|
106
|
+
desc "Generate rdoc documentation"
|
107
|
+
Rake::RDocTask.new("rdoc") do |rdoc|
|
108
|
+
rdoc.rdoc_dir = 'doc'
|
109
|
+
rdoc.title = "ruby-debug"
|
110
|
+
# Show source inline with line numbers
|
111
|
+
rdoc.options << "--inline-source" << "--line-numbers"
|
112
|
+
# Make the readme file the start page for the generated html
|
113
|
+
rdoc.options << '--main' << 'README'
|
114
|
+
rdoc.rdoc_files.include('bin/**/*',
|
115
|
+
'lib/**/*.rb',
|
116
|
+
'ext/**/ruby_debug.c',
|
117
|
+
'README',
|
118
|
+
'LICENSE')
|
119
|
+
end
|
data/bin/rdebug
CHANGED
@@ -19,7 +19,7 @@ options = OpenStruct.new(
|
|
19
19
|
opts = OptionParser.new do |opts|
|
20
20
|
opts.banner = <<EOB
|
21
21
|
ruby-debug #{Debugger::VERSION}
|
22
|
-
Usage: rdebug [options] <script.rb> <script.rb parameters>
|
22
|
+
Usage: rdebug [options] <script.rb> -- <script.rb parameters>
|
23
23
|
EOB
|
24
24
|
opts.separator ""
|
25
25
|
opts.separator "Options:"
|
data/ext/ruby_debug.c
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
#include <rubysig.h>
|
5
5
|
#include <st.h>
|
6
6
|
|
7
|
-
#define DEBUG_VERSION "0.4.
|
7
|
+
#define DEBUG_VERSION "0.4.2"
|
8
8
|
|
9
9
|
typedef struct {
|
10
10
|
int thnum;
|
@@ -59,6 +59,7 @@ static ID idList;
|
|
59
59
|
static ID idClear;
|
60
60
|
static ID idIndex;
|
61
61
|
|
62
|
+
static int start_count = 0;
|
62
63
|
static int thnum_max = 0;
|
63
64
|
static int last_debugged_thnum = -1;
|
64
65
|
|
@@ -68,6 +69,12 @@ static VALUE debug_stop(VALUE);
|
|
68
69
|
|
69
70
|
#define IS_STARTED (threads_tbl != Qnil)
|
70
71
|
|
72
|
+
/*
|
73
|
+
* call-seq:
|
74
|
+
* Debugger.started? -> bool
|
75
|
+
*
|
76
|
+
* Returns +true+ the debugger is started.
|
77
|
+
*/
|
71
78
|
static VALUE
|
72
79
|
debug_is_started(VALUE self)
|
73
80
|
{
|
@@ -512,11 +519,26 @@ debug_stop_i(VALUE value)
|
|
512
519
|
return Qnil;
|
513
520
|
}
|
514
521
|
|
522
|
+
/*
|
523
|
+
* call-seq:
|
524
|
+
* Debugger.start -> bool
|
525
|
+
* Debugger.start { ... } -> obj
|
526
|
+
*
|
527
|
+
* This method activates the debugger.
|
528
|
+
* If it's called without a block it returns +true+, unless debugger was already started.
|
529
|
+
* If a block is given, it starts debugger and yields to block. At the end of stops the debugger
|
530
|
+
* with Debugger.stop method.
|
531
|
+
*
|
532
|
+
* <i>Note that if you want to stop debugger, you must call Debugger.stop as many time as you
|
533
|
+
* called Debugger.start method.</i>
|
534
|
+
*/
|
515
535
|
static VALUE
|
516
536
|
debug_start(VALUE self)
|
517
537
|
{
|
538
|
+
start_count++;
|
539
|
+
|
518
540
|
if(IS_STARTED)
|
519
|
-
return
|
541
|
+
return Qfalse;
|
520
542
|
|
521
543
|
threads_tbl = rb_hash_new();
|
522
544
|
breakpoints = rb_ary_new();
|
@@ -531,20 +553,35 @@ debug_start(VALUE self)
|
|
531
553
|
if(rb_block_given_p())
|
532
554
|
return rb_ensure(rb_yield, Qnil, debug_stop_i, Qnil);
|
533
555
|
|
534
|
-
return
|
556
|
+
return Qtrue;
|
535
557
|
}
|
536
558
|
|
559
|
+
/*
|
560
|
+
* call-seq:
|
561
|
+
* Debugger.stop -> bool
|
562
|
+
*
|
563
|
+
* This method disacivates the debugger. It returns +true+ if the debugger is disacivated,
|
564
|
+
* otherwise it returns +false+.
|
565
|
+
*
|
566
|
+
* <i>Note that if you want to stop debugger, you must call Debugger.stop as many time as you
|
567
|
+
* called Debugger.start method.</i>
|
568
|
+
*/
|
537
569
|
static VALUE
|
538
570
|
debug_stop(VALUE self)
|
539
571
|
{
|
540
572
|
debug_check_started();
|
573
|
+
|
574
|
+
start_count--;
|
575
|
+
if(start_count)
|
576
|
+
return Qfalse;
|
577
|
+
|
541
578
|
rb_remove_event_hook(debug_event_hook);
|
542
579
|
|
543
580
|
waiting = Qnil;
|
544
581
|
breakpoints = Qnil;
|
545
582
|
threads_tbl = Qnil;
|
546
583
|
|
547
|
-
return
|
584
|
+
return Qtrue;
|
548
585
|
}
|
549
586
|
|
550
587
|
static void
|
@@ -557,6 +594,16 @@ breakpoint_mark(void *data)
|
|
557
594
|
rb_gc_mark(breakpoint->expr);
|
558
595
|
}
|
559
596
|
|
597
|
+
/*
|
598
|
+
* call-seq:
|
599
|
+
* Debugger.add_breakpoint(source, pos, condition = nil) -> breakpoint
|
600
|
+
*
|
601
|
+
* Adds a new breakpoint.
|
602
|
+
* <i>source</i> is a name of a file or a class.
|
603
|
+
* <i>pos</i> is a line number or a method name if <i>source</i> is a class name.
|
604
|
+
* <i>condition</i> is a string which is evaluated to +true+ when this breakpoint
|
605
|
+
* is activated.
|
606
|
+
*/
|
560
607
|
static VALUE
|
561
608
|
debug_add_breakpoint(int argc, VALUE *argv, VALUE self)
|
562
609
|
{
|
@@ -580,6 +627,12 @@ debug_add_breakpoint(int argc, VALUE *argv, VALUE self)
|
|
580
627
|
return result;
|
581
628
|
}
|
582
629
|
|
630
|
+
/*
|
631
|
+
* call-seq:
|
632
|
+
* Debugger.breakpoints -> array
|
633
|
+
*
|
634
|
+
* Returns an array of breakpoints.
|
635
|
+
*/
|
583
636
|
static VALUE
|
584
637
|
debug_breakpoints(VALUE self)
|
585
638
|
{
|
@@ -588,6 +641,13 @@ debug_breakpoints(VALUE self)
|
|
588
641
|
return breakpoints;
|
589
642
|
}
|
590
643
|
|
644
|
+
/*
|
645
|
+
* call-seq:
|
646
|
+
* Debugger.checkpoint -> string
|
647
|
+
*
|
648
|
+
* Returns a current checkpoint, which is a name of exception that will
|
649
|
+
* trigger a debugger when raised.
|
650
|
+
*/
|
591
651
|
static VALUE
|
592
652
|
debug_catchpoint(VALUE self)
|
593
653
|
{
|
@@ -596,6 +656,12 @@ debug_catchpoint(VALUE self)
|
|
596
656
|
return catchpoint;
|
597
657
|
}
|
598
658
|
|
659
|
+
/*
|
660
|
+
* call-seq:
|
661
|
+
* Debugger.checkpoint = string -> string
|
662
|
+
*
|
663
|
+
* Sets checkpoint.
|
664
|
+
*/
|
599
665
|
static VALUE
|
600
666
|
debug_set_catchpoint(VALUE self, VALUE value)
|
601
667
|
{
|
@@ -624,6 +690,12 @@ find_last_context_func(VALUE key, VALUE value, VALUE *result)
|
|
624
690
|
return ST_CONTINUE;
|
625
691
|
}
|
626
692
|
|
693
|
+
/*
|
694
|
+
* call-seq:
|
695
|
+
* Debugger.last_interrupted -> context
|
696
|
+
*
|
697
|
+
* Returns last debugged context.
|
698
|
+
*/
|
627
699
|
static VALUE
|
628
700
|
debug_last_interrupted(VALUE self)
|
629
701
|
{
|
@@ -635,6 +707,13 @@ debug_last_interrupted(VALUE self)
|
|
635
707
|
return result;
|
636
708
|
}
|
637
709
|
|
710
|
+
/*
|
711
|
+
* call-seq:
|
712
|
+
* Debugger.current_context -> context
|
713
|
+
*
|
714
|
+
* Returns current context.
|
715
|
+
* <i>Note:</i> Debugger.current_context.thread == Thread.current
|
716
|
+
*/
|
638
717
|
static VALUE
|
639
718
|
debug_current_context(VALUE self)
|
640
719
|
{
|
@@ -648,6 +727,12 @@ debug_current_context(VALUE self)
|
|
648
727
|
return context;
|
649
728
|
}
|
650
729
|
|
730
|
+
/*
|
731
|
+
* call-seq:
|
732
|
+
* Debugger.contexts -> array
|
733
|
+
*
|
734
|
+
* Returns an array of all contexts.
|
735
|
+
*/
|
651
736
|
static VALUE
|
652
737
|
debug_contexts(VALUE self)
|
653
738
|
{
|
@@ -681,6 +766,12 @@ debug_contexts(VALUE self)
|
|
681
766
|
return new_list;
|
682
767
|
}
|
683
768
|
|
769
|
+
/*
|
770
|
+
* call-seq:
|
771
|
+
* Debugger.suspend -> Debugger
|
772
|
+
*
|
773
|
+
* Suspends all contexts.
|
774
|
+
*/
|
684
775
|
static VALUE
|
685
776
|
debug_suspend(VALUE self)
|
686
777
|
{
|
@@ -713,6 +804,12 @@ debug_suspend(VALUE self)
|
|
713
804
|
return self;
|
714
805
|
}
|
715
806
|
|
807
|
+
/*
|
808
|
+
* call-seq:
|
809
|
+
* Debugger.resume -> Debugger
|
810
|
+
*
|
811
|
+
* Resumes all contexts.
|
812
|
+
*/
|
716
813
|
static VALUE
|
717
814
|
debug_resume(VALUE self)
|
718
815
|
{
|
@@ -751,12 +848,24 @@ debug_resume(VALUE self)
|
|
751
848
|
return self;
|
752
849
|
}
|
753
850
|
|
851
|
+
/*
|
852
|
+
* call-seq:
|
853
|
+
* Debugger.tracing -> bool
|
854
|
+
*
|
855
|
+
* Returns +true+ is a global tracing is activated.
|
856
|
+
*/
|
754
857
|
static VALUE
|
755
858
|
debug_tracing(VALUE self)
|
756
859
|
{
|
757
860
|
return tracing;
|
758
861
|
}
|
759
862
|
|
863
|
+
/*
|
864
|
+
* call-seq:
|
865
|
+
* Debugger.tracing = bool
|
866
|
+
*
|
867
|
+
* Sets a global tracing flag.
|
868
|
+
*/
|
760
869
|
static VALUE
|
761
870
|
debug_set_tracing(VALUE self, VALUE value)
|
762
871
|
{
|
@@ -764,6 +873,12 @@ debug_set_tracing(VALUE self, VALUE value)
|
|
764
873
|
return value;
|
765
874
|
}
|
766
875
|
|
876
|
+
/*
|
877
|
+
* call-seq:
|
878
|
+
* context.stop_next = steps
|
879
|
+
*
|
880
|
+
* Stops the current context after a number +steps+ are made.
|
881
|
+
*/
|
767
882
|
static VALUE
|
768
883
|
context_stop_next(VALUE self, VALUE steps)
|
769
884
|
{
|
@@ -779,6 +894,12 @@ context_stop_next(VALUE self, VALUE steps)
|
|
779
894
|
return steps;
|
780
895
|
}
|
781
896
|
|
897
|
+
/*
|
898
|
+
* call-seq:
|
899
|
+
* context.step_over(steps)
|
900
|
+
*
|
901
|
+
* Steps over a +steps+ number of times.
|
902
|
+
*/
|
782
903
|
static VALUE
|
783
904
|
context_step_over(int argc, VALUE *argv, VALUE self)
|
784
905
|
{
|
@@ -807,6 +928,12 @@ context_step_over(int argc, VALUE *argv, VALUE self)
|
|
807
928
|
return Qnil;
|
808
929
|
}
|
809
930
|
|
931
|
+
/*
|
932
|
+
* call-seq:
|
933
|
+
* context.stop_frame(frame)
|
934
|
+
*
|
935
|
+
* Stops when a frame with number +frame+ is activated. Implements +up+ and +down+ commands.
|
936
|
+
*/
|
810
937
|
static VALUE
|
811
938
|
context_stop_frame(VALUE self, VALUE frame)
|
812
939
|
{
|
@@ -822,6 +949,12 @@ context_stop_frame(VALUE self, VALUE frame)
|
|
822
949
|
return frame;
|
823
950
|
}
|
824
951
|
|
952
|
+
/*
|
953
|
+
* call-seq:
|
954
|
+
* context.frames -> array
|
955
|
+
*
|
956
|
+
* Returns an array of frames.
|
957
|
+
*/
|
825
958
|
static VALUE
|
826
959
|
context_frames(VALUE self)
|
827
960
|
{
|
@@ -831,6 +964,12 @@ context_frames(VALUE self)
|
|
831
964
|
return debug_context->frames;
|
832
965
|
}
|
833
966
|
|
967
|
+
/*
|
968
|
+
* call-seq:
|
969
|
+
* context.thread -> trhread
|
970
|
+
*
|
971
|
+
* Returns a thread this context is associated with.
|
972
|
+
*/
|
834
973
|
static VALUE
|
835
974
|
context_thread(VALUE self)
|
836
975
|
{
|
@@ -840,6 +979,12 @@ context_thread(VALUE self)
|
|
840
979
|
return debug_context->thread;
|
841
980
|
}
|
842
981
|
|
982
|
+
/*
|
983
|
+
* call-seq:
|
984
|
+
* context.thnum -> int
|
985
|
+
*
|
986
|
+
* Returns the context's number.
|
987
|
+
*/
|
843
988
|
static VALUE
|
844
989
|
context_thnum(VALUE self)
|
845
990
|
{
|
@@ -849,6 +994,12 @@ context_thnum(VALUE self)
|
|
849
994
|
return INT2FIX(debug_context->thnum);
|
850
995
|
}
|
851
996
|
|
997
|
+
/*
|
998
|
+
* call-seq:
|
999
|
+
* context.set_suspend -> nil
|
1000
|
+
*
|
1001
|
+
* Suspends the thread when it is running.
|
1002
|
+
*/
|
852
1003
|
static VALUE
|
853
1004
|
context_set_suspend(VALUE self)
|
854
1005
|
{
|
@@ -861,6 +1012,12 @@ context_set_suspend(VALUE self)
|
|
861
1012
|
return Qnil;
|
862
1013
|
}
|
863
1014
|
|
1015
|
+
/*
|
1016
|
+
* call-seq:
|
1017
|
+
* context.clear_suspend -> nil
|
1018
|
+
*
|
1019
|
+
* Clears a suspend flag.
|
1020
|
+
*/
|
864
1021
|
static VALUE
|
865
1022
|
context_clear_suspend(VALUE self)
|
866
1023
|
{
|
@@ -873,6 +1030,12 @@ context_clear_suspend(VALUE self)
|
|
873
1030
|
return Qnil;
|
874
1031
|
}
|
875
1032
|
|
1033
|
+
/*
|
1034
|
+
* call-seq:
|
1035
|
+
* context.tracing -> bool
|
1036
|
+
*
|
1037
|
+
* Returns the tracing flag for the current context.
|
1038
|
+
*/
|
876
1039
|
static VALUE
|
877
1040
|
context_tracing(VALUE self)
|
878
1041
|
{
|
@@ -884,6 +1047,12 @@ context_tracing(VALUE self)
|
|
884
1047
|
return debug_context->tracing ? Qtrue : Qfalse;
|
885
1048
|
}
|
886
1049
|
|
1050
|
+
/*
|
1051
|
+
* call-seq:
|
1052
|
+
* context.tracking = bool
|
1053
|
+
*
|
1054
|
+
* Controls the tracing for this context.
|
1055
|
+
*/
|
887
1056
|
static VALUE
|
888
1057
|
context_set_tracing(VALUE self, VALUE value)
|
889
1058
|
{
|
@@ -896,6 +1065,12 @@ context_set_tracing(VALUE self, VALUE value)
|
|
896
1065
|
return value;
|
897
1066
|
}
|
898
1067
|
|
1068
|
+
/*
|
1069
|
+
* call-seq:
|
1070
|
+
* frame.file -> string
|
1071
|
+
*
|
1072
|
+
* Returns the name of the file.
|
1073
|
+
*/
|
899
1074
|
static VALUE
|
900
1075
|
frame_file(VALUE self)
|
901
1076
|
{
|
@@ -905,6 +1080,12 @@ frame_file(VALUE self)
|
|
905
1080
|
return debug_frame->file;
|
906
1081
|
}
|
907
1082
|
|
1083
|
+
/*
|
1084
|
+
* call-seq:
|
1085
|
+
* frame.line -> int
|
1086
|
+
*
|
1087
|
+
* Returns the line number in the file.
|
1088
|
+
*/
|
908
1089
|
static VALUE
|
909
1090
|
frame_line(VALUE self)
|
910
1091
|
{
|
@@ -914,6 +1095,12 @@ frame_line(VALUE self)
|
|
914
1095
|
return debug_frame->line;
|
915
1096
|
}
|
916
1097
|
|
1098
|
+
/*
|
1099
|
+
* call-seq:
|
1100
|
+
* frame.binding -> binding
|
1101
|
+
*
|
1102
|
+
* Returns the binding captured at the moment this frame was created.
|
1103
|
+
*/
|
917
1104
|
static VALUE
|
918
1105
|
frame_binding(VALUE self)
|
919
1106
|
{
|
@@ -923,6 +1110,12 @@ frame_binding(VALUE self)
|
|
923
1110
|
return debug_frame->binding;
|
924
1111
|
}
|
925
1112
|
|
1113
|
+
/*
|
1114
|
+
* call-seq:
|
1115
|
+
* frame.id -> sym
|
1116
|
+
*
|
1117
|
+
* Returns the sym of the called method.
|
1118
|
+
*/
|
926
1119
|
static VALUE
|
927
1120
|
frame_id(VALUE self)
|
928
1121
|
{
|
@@ -932,6 +1125,12 @@ frame_id(VALUE self)
|
|
932
1125
|
return debug_frame->id ? ID2SYM(debug_frame->id): Qnil;
|
933
1126
|
}
|
934
1127
|
|
1128
|
+
/*
|
1129
|
+
* call-seq:
|
1130
|
+
* breakpoint.source -> string
|
1131
|
+
*
|
1132
|
+
* Returns a source of the breakpoint.
|
1133
|
+
*/
|
935
1134
|
static VALUE
|
936
1135
|
breakpoint_source(VALUE self)
|
937
1136
|
{
|
@@ -941,6 +1140,12 @@ breakpoint_source(VALUE self)
|
|
941
1140
|
return breakpoint->source;
|
942
1141
|
}
|
943
1142
|
|
1143
|
+
/*
|
1144
|
+
* call-seq:
|
1145
|
+
* breakpoint.pos -> string or int
|
1146
|
+
*
|
1147
|
+
* Returns a position of this breakpoint.
|
1148
|
+
*/
|
944
1149
|
static VALUE
|
945
1150
|
breakpoint_pos(VALUE self)
|
946
1151
|
{
|
@@ -950,6 +1155,12 @@ breakpoint_pos(VALUE self)
|
|
950
1155
|
return breakpoint->pos;
|
951
1156
|
}
|
952
1157
|
|
1158
|
+
/*
|
1159
|
+
* call-seq:
|
1160
|
+
* breakpoint.expr -> string
|
1161
|
+
*
|
1162
|
+
* Returns a codition expression when this breakpoint should be activated.
|
1163
|
+
*/
|
953
1164
|
static VALUE
|
954
1165
|
breakpoint_expr(VALUE self)
|
955
1166
|
{
|
@@ -959,30 +1170,18 @@ breakpoint_expr(VALUE self)
|
|
959
1170
|
return breakpoint->expr;
|
960
1171
|
}
|
961
1172
|
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
1173
|
+
/*
|
1174
|
+
* Document-class: Context
|
1175
|
+
*
|
1176
|
+
* == Summary
|
1177
|
+
*
|
1178
|
+
* Debugger keeps a single instance of this class for each Ruby thread.
|
1179
|
+
* This class provides access to stack frames (see Frame class). Also it
|
1180
|
+
* gives you ability to step thought the code.
|
1181
|
+
*/
|
1182
|
+
static void
|
1183
|
+
Init_context()
|
968
1184
|
{
|
969
|
-
mDebugger = rb_define_module("Debugger");
|
970
|
-
rb_define_const(mDebugger, "VERSION", rb_str_new2(DEBUG_VERSION));
|
971
|
-
rb_define_module_function(mDebugger, "start", debug_start, 0);
|
972
|
-
rb_define_module_function(mDebugger, "stop", debug_stop, 0);
|
973
|
-
rb_define_module_function(mDebugger, "started?", debug_is_started, 0);
|
974
|
-
rb_define_module_function(mDebugger, "breakpoints", debug_breakpoints, 0);
|
975
|
-
rb_define_module_function(mDebugger, "add_breakpoint", debug_add_breakpoint, -1);
|
976
|
-
rb_define_module_function(mDebugger, "catchpoint", debug_catchpoint, 0);
|
977
|
-
rb_define_module_function(mDebugger, "catchpoint=", debug_set_catchpoint, 1);
|
978
|
-
rb_define_module_function(mDebugger, "last_context", debug_last_interrupted, 0);
|
979
|
-
rb_define_module_function(mDebugger, "contexts", debug_contexts, 0);
|
980
|
-
rb_define_module_function(mDebugger, "current_context", debug_current_context, 0);
|
981
|
-
rb_define_module_function(mDebugger, "suspend", debug_suspend, 0);
|
982
|
-
rb_define_module_function(mDebugger, "resume", debug_resume, 0);
|
983
|
-
rb_define_module_function(mDebugger, "tracing", debug_tracing, 0);
|
984
|
-
rb_define_module_function(mDebugger, "tracing=", debug_set_tracing, 1);
|
985
|
-
|
986
1185
|
cContext = rb_define_class_under(mDebugger, "Context", rb_cObject);
|
987
1186
|
rb_define_method(cContext, "stop_next=", context_stop_next, 1);
|
988
1187
|
rb_define_method(cContext, "step_over", context_step_over, -1);
|
@@ -994,17 +1193,76 @@ Init_ruby_debug()
|
|
994
1193
|
rb_define_method(cContext, "clear_suspend", context_clear_suspend, 0);
|
995
1194
|
rb_define_method(cContext, "tracing", context_tracing, 0);
|
996
1195
|
rb_define_method(cContext, "tracing=", context_set_tracing, 1);
|
1196
|
+
}
|
997
1197
|
|
1198
|
+
/*
|
1199
|
+
* Document-class: Frame
|
1200
|
+
*
|
1201
|
+
* == Summary
|
1202
|
+
*
|
1203
|
+
* This class holds infomation about a particular call frame.
|
1204
|
+
*/
|
1205
|
+
static void
|
1206
|
+
Init_frame()
|
1207
|
+
{
|
998
1208
|
cFrame = rb_define_class_under(cContext, "Frame", rb_cObject);
|
999
1209
|
rb_define_method(cFrame, "file", frame_file, 0);
|
1000
1210
|
rb_define_method(cFrame, "line", frame_line, 0);
|
1001
1211
|
rb_define_method(cFrame, "binding", frame_binding, 0);
|
1002
1212
|
rb_define_method(cFrame, "id", frame_id, 0);
|
1213
|
+
}
|
1003
1214
|
|
1215
|
+
/*
|
1216
|
+
* Document-class: Breakpoint
|
1217
|
+
*
|
1218
|
+
* == Summary
|
1219
|
+
*
|
1220
|
+
* This class represents a breakpoint. It defines position of the breakpoint and
|
1221
|
+
* condition when this breakpoint should be triggered.
|
1222
|
+
*/
|
1223
|
+
static void
|
1224
|
+
Init_breakpoint()
|
1225
|
+
{
|
1004
1226
|
cBreakpoint = rb_define_class_under(mDebugger, "Breakpoint", rb_cObject);
|
1005
1227
|
rb_define_method(cBreakpoint, "source", breakpoint_source, 0);
|
1006
1228
|
rb_define_method(cBreakpoint, "pos", breakpoint_pos, 0);
|
1007
1229
|
rb_define_method(cBreakpoint, "expr", breakpoint_expr, 0);
|
1230
|
+
}
|
1231
|
+
|
1232
|
+
/*
|
1233
|
+
* Document-class: Debugger
|
1234
|
+
*
|
1235
|
+
* == Summary
|
1236
|
+
*
|
1237
|
+
* This is a singleton class allows controlling the debugger. Use it to start/stop debugger,
|
1238
|
+
* set/remove breakpoints, etc.
|
1239
|
+
*/
|
1240
|
+
#if defined(_WIN32)
|
1241
|
+
__declspec(dllexport)
|
1242
|
+
#endif
|
1243
|
+
void
|
1244
|
+
Init_ruby_debug()
|
1245
|
+
{
|
1246
|
+
mDebugger = rb_define_module("Debugger");
|
1247
|
+
rb_define_const(mDebugger, "VERSION", rb_str_new2(DEBUG_VERSION));
|
1248
|
+
rb_define_module_function(mDebugger, "start", debug_start, 0);
|
1249
|
+
rb_define_module_function(mDebugger, "stop", debug_stop, 0);
|
1250
|
+
rb_define_module_function(mDebugger, "started?", debug_is_started, 0);
|
1251
|
+
rb_define_module_function(mDebugger, "breakpoints", debug_breakpoints, 0);
|
1252
|
+
rb_define_module_function(mDebugger, "add_breakpoint", debug_add_breakpoint, -1);
|
1253
|
+
rb_define_module_function(mDebugger, "catchpoint", debug_catchpoint, 0);
|
1254
|
+
rb_define_module_function(mDebugger, "catchpoint=", debug_set_catchpoint, 1);
|
1255
|
+
rb_define_module_function(mDebugger, "last_context", debug_last_interrupted, 0);
|
1256
|
+
rb_define_module_function(mDebugger, "contexts", debug_contexts, 0);
|
1257
|
+
rb_define_module_function(mDebugger, "current_context", debug_current_context, 0);
|
1258
|
+
rb_define_module_function(mDebugger, "suspend", debug_suspend, 0);
|
1259
|
+
rb_define_module_function(mDebugger, "resume", debug_resume, 0);
|
1260
|
+
rb_define_module_function(mDebugger, "tracing", debug_tracing, 0);
|
1261
|
+
rb_define_module_function(mDebugger, "tracing=", debug_set_tracing, 1);
|
1262
|
+
|
1263
|
+
Init_context();
|
1264
|
+
Init_frame();
|
1265
|
+
Init_breakpoint();
|
1008
1266
|
|
1009
1267
|
idAtLine = rb_intern("at_line");
|
1010
1268
|
idAtBreakpoint = rb_intern("at_breakpoint");
|
@@ -1015,7 +1273,7 @@ Init_ruby_debug()
|
|
1015
1273
|
idEval = rb_intern("eval");
|
1016
1274
|
idList = rb_intern("list");
|
1017
1275
|
idClear = rb_intern("clear");
|
1018
|
-
idIndex
|
1276
|
+
idIndex = rb_intern("index");
|
1019
1277
|
|
1020
1278
|
file_separator = rb_eval_string("File::SEPARATOR");
|
1021
1279
|
alt_file_separator = rb_eval_string("File::ALT_SEPARATOR");
|
data/lib/ruby-debug.rb
CHANGED
@@ -55,13 +55,17 @@ module Debugger
|
|
55
55
|
|
56
56
|
attr_reader :thread, :control_thread
|
57
57
|
|
58
|
+
#
|
58
59
|
# Interrupts the main thread
|
60
|
+
#
|
59
61
|
def interrupt
|
60
62
|
context = contexts.find{|c| c.thread == Thread.current }
|
61
63
|
context.interrupt
|
62
64
|
end
|
63
65
|
|
66
|
+
#
|
64
67
|
# Interrupts the last debugged thread
|
68
|
+
#
|
65
69
|
def interrupt_last
|
66
70
|
if context = last_context
|
67
71
|
return nil unless context.thread.alive?
|
@@ -70,11 +74,13 @@ module Debugger
|
|
70
74
|
context
|
71
75
|
end
|
72
76
|
|
73
|
-
def interface=(value)
|
77
|
+
def interface=(value) # :nodoc:
|
74
78
|
processor.interface = value
|
75
79
|
end
|
76
80
|
|
81
|
+
#
|
77
82
|
# Starts a remote debugger.
|
83
|
+
#
|
78
84
|
def start_remote(host = nil, port = PORT)
|
79
85
|
return if @thread
|
80
86
|
return if started?
|
@@ -124,7 +130,9 @@ module Debugger
|
|
124
130
|
end
|
125
131
|
alias start_server start_remote
|
126
132
|
|
133
|
+
#
|
127
134
|
# Connects to the remote debugger
|
135
|
+
#
|
128
136
|
def start_client(host = 'localhost', port = PORT)
|
129
137
|
require "socket"
|
130
138
|
interface = Debugger::LocalInterface.new
|
@@ -151,7 +159,7 @@ module Debugger
|
|
151
159
|
puts
|
152
160
|
end
|
153
161
|
|
154
|
-
def stop_main_thread
|
162
|
+
def stop_main_thread # :nodoc:
|
155
163
|
return unless stop_on_connect
|
156
164
|
|
157
165
|
context = contexts.find{ |c| c.thread == Thread.main }
|
@@ -159,7 +167,7 @@ module Debugger
|
|
159
167
|
end
|
160
168
|
private :stop_main_thread
|
161
169
|
|
162
|
-
def source_for(file)
|
170
|
+
def source_for(file) # :nodoc:
|
163
171
|
if source = SCRIPT_LINES__[file]
|
164
172
|
return source unless source == true
|
165
173
|
end
|
@@ -168,7 +176,7 @@ module Debugger
|
|
168
176
|
end
|
169
177
|
end
|
170
178
|
|
171
|
-
def line_at(file, line)
|
179
|
+
def line_at(file, line) # :nodoc:
|
172
180
|
lines = source_for(file)
|
173
181
|
if lines
|
174
182
|
line = lines[line-1]
|
@@ -178,7 +186,9 @@ module Debugger
|
|
178
186
|
return "\n"
|
179
187
|
end
|
180
188
|
|
181
|
-
#
|
189
|
+
#
|
190
|
+
# Runs a script file
|
191
|
+
#
|
182
192
|
def run_script(file, out = processor.interface)
|
183
193
|
interface = ScriptInterface.new(file, out)
|
184
194
|
processor = ControlCommandProcessor.new(interface)
|
@@ -188,15 +198,36 @@ module Debugger
|
|
188
198
|
end
|
189
199
|
|
190
200
|
module Kernel
|
191
|
-
#
|
201
|
+
#
|
202
|
+
# Stops the current thread after a number of _steps_ made.
|
203
|
+
#
|
192
204
|
def debugger(steps = 1)
|
193
205
|
Debugger.current_context.stop_next = steps
|
194
206
|
end
|
195
207
|
|
196
|
-
#
|
208
|
+
#
|
209
|
+
# Returns a binding of n-th call frame
|
210
|
+
#
|
197
211
|
def binding_n(n = 0)
|
198
212
|
frame = Debugger.current_context.frames[n+1]
|
199
213
|
raise "Unknown frame #{n}" unless frame
|
200
214
|
frame.binding
|
201
215
|
end
|
216
|
+
end
|
217
|
+
|
218
|
+
class Module
|
219
|
+
#
|
220
|
+
# Wraps the +meth+ method with Debugger.start {...} block.
|
221
|
+
#
|
222
|
+
def debug_method(meth)
|
223
|
+
alias_method "__debugee_#{meth}".to_sym, meth
|
224
|
+
class_eval <<-EOD
|
225
|
+
def #{meth}(*args, &block)
|
226
|
+
Debugger.start do
|
227
|
+
debugger 2
|
228
|
+
__debugee_#{meth}(*args, &block)
|
229
|
+
end
|
230
|
+
end
|
231
|
+
EOD
|
232
|
+
end
|
202
233
|
end
|
data/lib/ruby-debug/command.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Debugger
|
2
|
-
class AddBreakpoint < Command
|
2
|
+
class AddBreakpoint < Command # :nodoc:
|
3
3
|
self.control = true
|
4
4
|
|
5
5
|
def regexp
|
@@ -19,13 +19,12 @@ module Debugger
|
|
19
19
|
|
20
20
|
def execute
|
21
21
|
if @match[1]
|
22
|
-
|
22
|
+
pos, _, _, expr = @match.captures
|
23
23
|
else
|
24
|
-
file, pos, expr = @match.captures
|
24
|
+
_, file, pos, expr = @match.captures
|
25
25
|
end
|
26
26
|
|
27
|
-
if file
|
28
|
-
pos = file
|
27
|
+
if file.nil?
|
29
28
|
file = File.basename(@state.file)
|
30
29
|
else
|
31
30
|
if pos !~ /^\d+$/
|
@@ -65,7 +64,7 @@ module Debugger
|
|
65
64
|
end
|
66
65
|
end
|
67
66
|
|
68
|
-
class BreakpointsCommand < Command
|
67
|
+
class BreakpointsCommand < Command # :nodoc:
|
69
68
|
self.control = true
|
70
69
|
|
71
70
|
def regexp
|
@@ -101,7 +100,7 @@ module Debugger
|
|
101
100
|
end
|
102
101
|
end
|
103
102
|
|
104
|
-
class DeleteBreakpointCommand < Command
|
103
|
+
class DeleteBreakpointCommand < Command # :nodoc:
|
105
104
|
self.control = true
|
106
105
|
|
107
106
|
def regexp
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Debugger
|
2
|
-
class QuitCommand < Command
|
2
|
+
class QuitCommand < Command # :nodoc:
|
3
3
|
self.control = true
|
4
4
|
|
5
5
|
def regexp
|
@@ -26,7 +26,7 @@ module Debugger
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
class InterruptCommand < Command
|
29
|
+
class InterruptCommand < Command # :nodoc:
|
30
30
|
self.event = false
|
31
31
|
self.control = true
|
32
32
|
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module Debugger
|
2
|
-
module DisplayFunctions
|
2
|
+
module DisplayFunctions # :nodoc:
|
3
3
|
def display_expression(exp)
|
4
4
|
print "%s = %s\n", exp, debug_silent_eval(exp).to_s
|
5
5
|
end
|
6
6
|
end
|
7
7
|
|
8
|
-
class AddDisplayCommand < Command
|
8
|
+
class AddDisplayCommand < Command # :nodoc:
|
9
9
|
include DisplayFunctions
|
10
10
|
|
11
11
|
def regexp
|
@@ -32,7 +32,7 @@ module Debugger
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
class DisplayCommand < Command
|
35
|
+
class DisplayCommand < Command # :nodoc:
|
36
36
|
self.always_run = true
|
37
37
|
include DisplayFunctions
|
38
38
|
|
@@ -68,7 +68,7 @@ module Debugger
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
class DeleteDisplayCommand < Command
|
71
|
+
class DeleteDisplayCommand < Command # :nodoc:
|
72
72
|
include DisplayFunctions
|
73
73
|
|
74
74
|
def regexp
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Debugger
|
2
|
-
class EvalCommand < Command
|
2
|
+
class EvalCommand < Command # :nodoc:
|
3
3
|
def match(input)
|
4
4
|
@input = input
|
5
5
|
super
|
@@ -40,7 +40,7 @@ module Debugger
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
class PPCommand < Command
|
43
|
+
class PPCommand < Command # :nodoc:
|
44
44
|
def regexp
|
45
45
|
/^\s*pp\s+/
|
46
46
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module Debugger
|
2
|
-
module FrameFunctions
|
2
|
+
module FrameFunctions # :nodoc:
|
3
3
|
def format_frame(frame, pos)
|
4
4
|
file, line, id = frame.file, frame.line, frame.id
|
5
5
|
"#%d %s:%s%s\n" % [pos + 1, file, line, (id ? ":in `#{id.id2name}'" : "")]
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
class WhereCommand < Command
|
9
|
+
class WhereCommand < Command # :nodoc:
|
10
10
|
include FrameFunctions
|
11
11
|
|
12
12
|
def regexp
|
@@ -43,7 +43,7 @@ module Debugger
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
class UpCommand < Command
|
46
|
+
class UpCommand < Command # :nodoc:
|
47
47
|
include FrameFunctions
|
48
48
|
|
49
49
|
def regexp
|
@@ -91,7 +91,7 @@ module Debugger
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
-
class DownCommand < Command
|
94
|
+
class DownCommand < Command # :nodoc:
|
95
95
|
include FrameFunctions
|
96
96
|
|
97
97
|
def regexp
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Debugger
|
2
|
-
class ScriptCommand < Command
|
2
|
+
class ScriptCommand < Command # :nodoc:
|
3
3
|
self.control = true
|
4
4
|
|
5
5
|
def regexp
|
@@ -27,7 +27,7 @@ module Debugger
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
class SaveCommand < Command
|
30
|
+
class SaveCommand < Command # :nodoc:
|
31
31
|
self.control = true
|
32
32
|
|
33
33
|
def regexp
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Debugger
|
2
|
-
class NextCommand < Command
|
2
|
+
class NextCommand < Command # :nodoc:
|
3
3
|
def regexp
|
4
4
|
/^\s*n(?:ext)?(?:\s+(\d+))?$/
|
5
5
|
end
|
@@ -23,7 +23,7 @@ module Debugger
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
class StepCommand < Command
|
26
|
+
class StepCommand < Command # :nodoc:
|
27
27
|
def regexp
|
28
28
|
/^\s*s(?:tep)?(?:\s+(\d+))?$/
|
29
29
|
end
|
@@ -46,7 +46,7 @@ module Debugger
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
class FinishCommand < Command
|
49
|
+
class FinishCommand < Command # :nodoc:
|
50
50
|
def regexp
|
51
51
|
/^\s*fin(?:ish)?$/
|
52
52
|
end
|
@@ -74,7 +74,7 @@ module Debugger
|
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
class ContinueCommand < Command
|
77
|
+
class ContinueCommand < Command # :nodoc:
|
78
78
|
def regexp
|
79
79
|
/^\s*c(?:ont)?$|^\s*r(?:un)?$/
|
80
80
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Debugger
|
2
|
-
module ThreadFunctions
|
2
|
+
module ThreadFunctions # :nodoc:
|
3
3
|
def display_context(c)
|
4
4
|
c_flag = c.thread == Thread.current ? '+' : ' '
|
5
5
|
d_flag = debugger_thread?(c) ? '!' : ' '
|
@@ -18,7 +18,7 @@ module Debugger
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
class ThreadListCommand < Command
|
21
|
+
class ThreadListCommand < Command # :nodoc:
|
22
22
|
self.control = true
|
23
23
|
include ThreadFunctions
|
24
24
|
|
@@ -45,7 +45,7 @@ module Debugger
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
class ThreadSwitchCommand < Command
|
48
|
+
class ThreadSwitchCommand < Command # :nodoc:
|
49
49
|
self.control = true
|
50
50
|
include ThreadFunctions
|
51
51
|
|
@@ -81,7 +81,7 @@ module Debugger
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
-
class ThreadStopCommand < Command
|
84
|
+
class ThreadStopCommand < Command # :nodoc:
|
85
85
|
self.control = true
|
86
86
|
include ThreadFunctions
|
87
87
|
|
@@ -117,7 +117,7 @@ module Debugger
|
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
120
|
-
class ThreadCurrentCommand < Command
|
120
|
+
class ThreadCurrentCommand < Command # :nodoc:
|
121
121
|
include ThreadFunctions
|
122
122
|
|
123
123
|
def regexp
|
@@ -141,7 +141,7 @@ module Debugger
|
|
141
141
|
end
|
142
142
|
end
|
143
143
|
|
144
|
-
class ThreadResumeCommand < Command
|
144
|
+
class ThreadResumeCommand < Command # :nodoc:
|
145
145
|
self.control = true
|
146
146
|
include ThreadFunctions
|
147
147
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Debugger
|
2
|
-
module VarFunctions
|
2
|
+
module VarFunctions # :nodoc:
|
3
3
|
def var_list(ary, bind = nil)
|
4
4
|
bind ||= @state.binding
|
5
5
|
ary.sort!
|
@@ -9,7 +9,7 @@ module Debugger
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
class VarConstantCommand < Command
|
12
|
+
class VarConstantCommand < Command # :nodoc:
|
13
13
|
include VarFunctions
|
14
14
|
|
15
15
|
def regexp
|
@@ -38,7 +38,7 @@ module Debugger
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
class VarGlobalCommand < Command
|
41
|
+
class VarGlobalCommand < Command # :nodoc:
|
42
42
|
include VarFunctions
|
43
43
|
|
44
44
|
def regexp
|
@@ -62,7 +62,7 @@ module Debugger
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
class VarInstanceCommand < Command
|
65
|
+
class VarInstanceCommand < Command # :nodoc:
|
66
66
|
include VarFunctions
|
67
67
|
|
68
68
|
def regexp
|
@@ -87,7 +87,7 @@ module Debugger
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
class VarLocalCommand < Command
|
90
|
+
class VarLocalCommand < Command # :nodoc:
|
91
91
|
include VarFunctions
|
92
92
|
|
93
93
|
def regexp
|
data/lib/ruby-debug/interface.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Debugger
|
2
|
-
class LocalInterface
|
2
|
+
class LocalInterface # :nodoc:
|
3
3
|
def read_command(prompt)
|
4
4
|
readline(prompt, true)
|
5
5
|
end
|
@@ -55,7 +55,7 @@ module Debugger
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
-
class RemoteInterface
|
58
|
+
class RemoteInterface # :nodoc:
|
59
59
|
def initialize(socket)
|
60
60
|
@socket = socket
|
61
61
|
end
|
@@ -87,7 +87,7 @@ module Debugger
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
class ScriptInterface
|
90
|
+
class ScriptInterface # :nodoc:
|
91
91
|
def initialize(file, out)
|
92
92
|
@file = open(file)
|
93
93
|
@out = out
|
data/lib/ruby-debug/lock.rb
CHANGED
data/lib/ruby-debug/processor.rb
CHANGED
@@ -2,7 +2,7 @@ require 'ruby-debug/interface'
|
|
2
2
|
require 'ruby-debug/command'
|
3
3
|
|
4
4
|
module Debugger
|
5
|
-
class CommandProcessor
|
5
|
+
class CommandProcessor # :nodoc:
|
6
6
|
attr_accessor :interface
|
7
7
|
attr_reader :display
|
8
8
|
|
@@ -110,7 +110,7 @@ module Debugger
|
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|
113
|
-
class State
|
113
|
+
class State # :nodoc:
|
114
114
|
attr_accessor :context, :file, :line, :binding
|
115
115
|
attr_accessor :frame_pos, :previous_line, :display
|
116
116
|
attr_accessor :interface, :commands
|
@@ -139,7 +139,7 @@ module Debugger
|
|
139
139
|
end
|
140
140
|
end
|
141
141
|
|
142
|
-
class ControlCommandProcessor
|
142
|
+
class ControlCommandProcessor # :nodoc:
|
143
143
|
def initialize(interface)
|
144
144
|
@interface = interface
|
145
145
|
end
|
@@ -170,7 +170,7 @@ module Debugger
|
|
170
170
|
@interface.close
|
171
171
|
end
|
172
172
|
|
173
|
-
class State
|
173
|
+
class State # :nodoc:
|
174
174
|
attr_reader :commands
|
175
175
|
def initialize(interface, commands)
|
176
176
|
@interface = interface
|
data/lib/ruby_debug.so
CHANGED
Binary file
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: ruby-debug
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.4.
|
7
|
-
date: 2006-
|
6
|
+
version: 0.4.2
|
7
|
+
date: 2006-09-15 10:57:34 -04:00
|
8
8
|
summary: Fast Ruby debugger
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -15,7 +15,7 @@ description: ruby-debug is a fast implementation of the standard Ruby debugger d
|
|
15
15
|
autorequire: ruby-debug
|
16
16
|
default_executable:
|
17
17
|
bindir: bin
|
18
|
-
has_rdoc:
|
18
|
+
has_rdoc: true
|
19
19
|
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
20
|
requirements:
|
21
21
|
- - ">="
|