ruby-debug-base19 0.11.21 → 0.11.22
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/ruby_debug.c +15 -19
- metadata +2 -2
data/ext/ruby_debug/ruby_debug.c
CHANGED
@@ -726,7 +726,7 @@ debug_event_hook(rb_event_flag_t event, VALUE data, VALUE self, ID mid, VALUE kl
|
|
726
726
|
|
727
727
|
hook_count++;
|
728
728
|
|
729
|
-
if ((iseq == NULL) && (event != RUBY_EVENT_RAISE))
|
729
|
+
if (((iseq == NULL) || (file == NULL)) && (event != RUBY_EVENT_RAISE))
|
730
730
|
return;
|
731
731
|
thread_context_lookup(thread->self, &context, &debug_context, 1);
|
732
732
|
|
@@ -1783,10 +1783,8 @@ context_frame_line(int argc, VALUE *argv, VALUE self)
|
|
1783
1783
|
{
|
1784
1784
|
VALUE frame;
|
1785
1785
|
debug_context_t *debug_context;
|
1786
|
-
debug_frame_t *debug_frame;
|
1787
|
-
rb_control_frame_t *cfp;
|
1788
|
-
rb_control_frame_t *cfp_end;
|
1789
1786
|
rb_thread_t *th;
|
1787
|
+
rb_control_frame_t *cfp;
|
1790
1788
|
VALUE *pc;
|
1791
1789
|
|
1792
1790
|
debug_check_started();
|
@@ -1794,14 +1792,9 @@ context_frame_line(int argc, VALUE *argv, VALUE self)
|
|
1794
1792
|
Data_Get_Struct(self, debug_context_t, debug_context);
|
1795
1793
|
GetThreadPtr(context_thread_0(debug_context), th);
|
1796
1794
|
|
1797
|
-
debug_frame = get_top_frame(debug_context);
|
1798
|
-
if (debug_frame == NULL)
|
1799
|
-
return(INT2FIX(0));
|
1800
|
-
|
1801
1795
|
pc = GET_FRAME->info.runtime.last_pc;
|
1802
|
-
cfp_end = RUBY_VM_END_CONTROL_FRAME(th);
|
1803
1796
|
cfp = GET_FRAME->info.runtime.cfp;
|
1804
|
-
while (cfp >
|
1797
|
+
while (cfp > th->cfp)
|
1805
1798
|
{
|
1806
1799
|
if ((cfp->iseq != NULL) && (pc >= cfp->iseq->iseq_encoded) && (pc < cfp->iseq->iseq_encoded + cfp->iseq->iseq_size))
|
1807
1800
|
return(INT2FIX(rb_vm_get_sourceline(cfp)));
|
@@ -1923,7 +1916,11 @@ context_copy_locals(debug_context_t *debug_context, debug_frame_t *debug_frame,
|
|
1923
1916
|
{
|
1924
1917
|
/* Note rb_iseq_disasm() is instructive in coming up with this code */
|
1925
1918
|
for (i = 0; i < iseq->local_table_size; i++)
|
1926
|
-
|
1919
|
+
{
|
1920
|
+
VALUE str = rb_id2str(iseq->local_table[i]);
|
1921
|
+
if (str != 0)
|
1922
|
+
rb_hash_aset(hash, str, *(cfp->dfp - iseq->local_size + i));
|
1923
|
+
}
|
1927
1924
|
}
|
1928
1925
|
|
1929
1926
|
iseq = cfp->block_iseq;
|
@@ -1937,7 +1934,11 @@ context_copy_locals(debug_context_t *debug_context, debug_frame_t *debug_frame,
|
|
1937
1934
|
if (block_frame->iseq == cfp->block_iseq)
|
1938
1935
|
{
|
1939
1936
|
for (i = 0; i < iseq->local_table_size; i++)
|
1940
|
-
|
1937
|
+
{
|
1938
|
+
VALUE str = rb_id2str(iseq->local_table[i]);
|
1939
|
+
if (str != 0)
|
1940
|
+
rb_hash_aset(hash, str, *(block_frame->dfp - iseq->local_table_size + i - 1));
|
1941
|
+
}
|
1941
1942
|
return(hash);
|
1942
1943
|
}
|
1943
1944
|
block_frame = RUBY_VM_NEXT_CONTROL_FRAME(block_frame);
|
@@ -2363,11 +2364,10 @@ FUNC_FASTCALL(do_jump)(rb_thread_t *th, rb_control_frame_t *cfp)
|
|
2363
2364
|
* Returns +true+ if jump to +line+ in filename +file+ was successful.
|
2364
2365
|
*/
|
2365
2366
|
static VALUE
|
2366
|
-
context_jump(
|
2367
|
+
context_jump(VALUE self, VALUE line, VALUE file)
|
2367
2368
|
{
|
2368
2369
|
debug_context_t *debug_context;
|
2369
2370
|
debug_frame_t *debug_frame;
|
2370
|
-
VALUE line, file;
|
2371
2371
|
int i;
|
2372
2372
|
rb_thread_t *th;
|
2373
2373
|
rb_control_frame_t *cfp;
|
@@ -2382,10 +2382,6 @@ context_jump(int argc, VALUE *argv, VALUE self)
|
|
2382
2382
|
if (debug_frame == NULL)
|
2383
2383
|
rb_raise(rb_eRuntimeError, "No frames collected.");
|
2384
2384
|
|
2385
|
-
if (argc != 2)
|
2386
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
|
2387
|
-
rb_scan_args(argc, argv, "2", &line, &file);
|
2388
|
-
|
2389
2385
|
line = FIX2INT(line);
|
2390
2386
|
|
2391
2387
|
/* find topmost frame of the debugged code */
|
@@ -2476,7 +2472,7 @@ Init_context()
|
|
2476
2472
|
context_breakpoint, 0); /* in breakpoint.c */
|
2477
2473
|
rb_define_method(cContext, "set_breakpoint",
|
2478
2474
|
context_set_breakpoint, -1); /* in breakpoint.c */
|
2479
|
-
rb_define_method(cContext, "jump", context_jump,
|
2475
|
+
rb_define_method(cContext, "jump", context_jump, 2);
|
2480
2476
|
}
|
2481
2477
|
|
2482
2478
|
/*
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-debug-base19
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kent Sibilev
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-09-
|
13
|
+
date: 2009-09-08 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|