diff options
Diffstat (limited to 'ext/-test-/debug')
-rw-r--r-- | ext/-test-/debug/depend | 94 | ||||
-rw-r--r-- | ext/-test-/debug/inspector.c | 14 | ||||
-rw-r--r-- | ext/-test-/debug/profile_frames.c | 48 |
3 files changed, 89 insertions, 67 deletions
diff --git a/ext/-test-/debug/depend b/ext/-test-/debug/depend index 6c1c736d61..67e32c6aa6 100644 --- a/ext/-test-/debug/depend +++ b/ext/-test-/debug/depend @@ -2,6 +2,19 @@ init.o: $(RUBY_EXTCONF_H) init.o: $(arch_hdrdir)/ruby/config.h init.o: $(hdrdir)/ruby.h +init.o: $(hdrdir)/ruby/assert.h +init.o: $(hdrdir)/ruby/backward.h +init.o: $(hdrdir)/ruby/backward/2/assume.h +init.o: $(hdrdir)/ruby/backward/2/attributes.h +init.o: $(hdrdir)/ruby/backward/2/bool.h +init.o: $(hdrdir)/ruby/backward/2/inttypes.h +init.o: $(hdrdir)/ruby/backward/2/limits.h +init.o: $(hdrdir)/ruby/backward/2/long_long.h +init.o: $(hdrdir)/ruby/backward/2/stdalign.h +init.o: $(hdrdir)/ruby/backward/2/stdarg.h +init.o: $(hdrdir)/ruby/defines.h +init.o: $(hdrdir)/ruby/intern.h +init.o: $(hdrdir)/ruby/internal/abi.h init.o: $(hdrdir)/ruby/internal/anyargs.h init.o: $(hdrdir)/ruby/internal/arithmetic.h init.o: $(hdrdir)/ruby/internal/arithmetic/char.h @@ -39,6 +52,7 @@ init.o: $(hdrdir)/ruby/internal/attr/noexcept.h init.o: $(hdrdir)/ruby/internal/attr/noinline.h init.o: $(hdrdir)/ruby/internal/attr/nonnull.h init.o: $(hdrdir)/ruby/internal/attr/noreturn.h +init.o: $(hdrdir)/ruby/internal/attr/packed_struct.h init.o: $(hdrdir)/ruby/internal/attr/pure.h init.o: $(hdrdir)/ruby/internal/attr/restrict.h init.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -98,7 +112,6 @@ init.o: $(hdrdir)/ruby/internal/intern/enumerator.h init.o: $(hdrdir)/ruby/internal/intern/error.h init.o: $(hdrdir)/ruby/internal/intern/eval.h init.o: $(hdrdir)/ruby/internal/intern/file.h -init.o: $(hdrdir)/ruby/internal/intern/gc.h init.o: $(hdrdir)/ruby/internal/intern/hash.h init.o: $(hdrdir)/ruby/internal/intern/io.h init.o: $(hdrdir)/ruby/internal/intern/load.h @@ -129,31 +142,18 @@ init.o: $(hdrdir)/ruby/internal/memory.h init.o: $(hdrdir)/ruby/internal/method.h init.o: $(hdrdir)/ruby/internal/module.h init.o: $(hdrdir)/ruby/internal/newobj.h -init.o: $(hdrdir)/ruby/internal/rgengc.h init.o: $(hdrdir)/ruby/internal/scan_args.h init.o: $(hdrdir)/ruby/internal/special_consts.h init.o: $(hdrdir)/ruby/internal/static_assert.h init.o: $(hdrdir)/ruby/internal/stdalign.h init.o: $(hdrdir)/ruby/internal/stdbool.h +init.o: $(hdrdir)/ruby/internal/stdckdint.h init.o: $(hdrdir)/ruby/internal/symbol.h init.o: $(hdrdir)/ruby/internal/value.h init.o: $(hdrdir)/ruby/internal/value_type.h init.o: $(hdrdir)/ruby/internal/variable.h init.o: $(hdrdir)/ruby/internal/warning_push.h init.o: $(hdrdir)/ruby/internal/xmalloc.h -init.o: $(hdrdir)/ruby/assert.h -init.o: $(hdrdir)/ruby/backward.h -init.o: $(hdrdir)/ruby/backward/2/assume.h -init.o: $(hdrdir)/ruby/backward/2/attributes.h -init.o: $(hdrdir)/ruby/backward/2/bool.h -init.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h -init.o: $(hdrdir)/ruby/backward/2/inttypes.h -init.o: $(hdrdir)/ruby/backward/2/limits.h -init.o: $(hdrdir)/ruby/backward/2/long_long.h -init.o: $(hdrdir)/ruby/backward/2/stdalign.h -init.o: $(hdrdir)/ruby/backward/2/stdarg.h -init.o: $(hdrdir)/ruby/defines.h -init.o: $(hdrdir)/ruby/intern.h init.o: $(hdrdir)/ruby/missing.h init.o: $(hdrdir)/ruby/ruby.h init.o: $(hdrdir)/ruby/st.h @@ -161,6 +161,20 @@ init.o: $(hdrdir)/ruby/subst.h init.o: init.c inspector.o: $(RUBY_EXTCONF_H) inspector.o: $(arch_hdrdir)/ruby/config.h +inspector.o: $(hdrdir)/ruby/assert.h +inspector.o: $(hdrdir)/ruby/backward.h +inspector.o: $(hdrdir)/ruby/backward/2/assume.h +inspector.o: $(hdrdir)/ruby/backward/2/attributes.h +inspector.o: $(hdrdir)/ruby/backward/2/bool.h +inspector.o: $(hdrdir)/ruby/backward/2/inttypes.h +inspector.o: $(hdrdir)/ruby/backward/2/limits.h +inspector.o: $(hdrdir)/ruby/backward/2/long_long.h +inspector.o: $(hdrdir)/ruby/backward/2/stdalign.h +inspector.o: $(hdrdir)/ruby/backward/2/stdarg.h +inspector.o: $(hdrdir)/ruby/debug.h +inspector.o: $(hdrdir)/ruby/defines.h +inspector.o: $(hdrdir)/ruby/intern.h +inspector.o: $(hdrdir)/ruby/internal/abi.h inspector.o: $(hdrdir)/ruby/internal/anyargs.h inspector.o: $(hdrdir)/ruby/internal/arithmetic.h inspector.o: $(hdrdir)/ruby/internal/arithmetic/char.h @@ -198,6 +212,7 @@ inspector.o: $(hdrdir)/ruby/internal/attr/noexcept.h inspector.o: $(hdrdir)/ruby/internal/attr/noinline.h inspector.o: $(hdrdir)/ruby/internal/attr/nonnull.h inspector.o: $(hdrdir)/ruby/internal/attr/noreturn.h +inspector.o: $(hdrdir)/ruby/internal/attr/packed_struct.h inspector.o: $(hdrdir)/ruby/internal/attr/pure.h inspector.o: $(hdrdir)/ruby/internal/attr/restrict.h inspector.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -257,7 +272,6 @@ inspector.o: $(hdrdir)/ruby/internal/intern/enumerator.h inspector.o: $(hdrdir)/ruby/internal/intern/error.h inspector.o: $(hdrdir)/ruby/internal/intern/eval.h inspector.o: $(hdrdir)/ruby/internal/intern/file.h -inspector.o: $(hdrdir)/ruby/internal/intern/gc.h inspector.o: $(hdrdir)/ruby/internal/intern/hash.h inspector.o: $(hdrdir)/ruby/internal/intern/io.h inspector.o: $(hdrdir)/ruby/internal/intern/load.h @@ -288,32 +302,18 @@ inspector.o: $(hdrdir)/ruby/internal/memory.h inspector.o: $(hdrdir)/ruby/internal/method.h inspector.o: $(hdrdir)/ruby/internal/module.h inspector.o: $(hdrdir)/ruby/internal/newobj.h -inspector.o: $(hdrdir)/ruby/internal/rgengc.h inspector.o: $(hdrdir)/ruby/internal/scan_args.h inspector.o: $(hdrdir)/ruby/internal/special_consts.h inspector.o: $(hdrdir)/ruby/internal/static_assert.h inspector.o: $(hdrdir)/ruby/internal/stdalign.h inspector.o: $(hdrdir)/ruby/internal/stdbool.h +inspector.o: $(hdrdir)/ruby/internal/stdckdint.h inspector.o: $(hdrdir)/ruby/internal/symbol.h inspector.o: $(hdrdir)/ruby/internal/value.h inspector.o: $(hdrdir)/ruby/internal/value_type.h inspector.o: $(hdrdir)/ruby/internal/variable.h inspector.o: $(hdrdir)/ruby/internal/warning_push.h inspector.o: $(hdrdir)/ruby/internal/xmalloc.h -inspector.o: $(hdrdir)/ruby/assert.h -inspector.o: $(hdrdir)/ruby/backward.h -inspector.o: $(hdrdir)/ruby/backward/2/assume.h -inspector.o: $(hdrdir)/ruby/backward/2/attributes.h -inspector.o: $(hdrdir)/ruby/backward/2/bool.h -inspector.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h -inspector.o: $(hdrdir)/ruby/backward/2/inttypes.h -inspector.o: $(hdrdir)/ruby/backward/2/limits.h -inspector.o: $(hdrdir)/ruby/backward/2/long_long.h -inspector.o: $(hdrdir)/ruby/backward/2/stdalign.h -inspector.o: $(hdrdir)/ruby/backward/2/stdarg.h -inspector.o: $(hdrdir)/ruby/debug.h -inspector.o: $(hdrdir)/ruby/defines.h -inspector.o: $(hdrdir)/ruby/intern.h inspector.o: $(hdrdir)/ruby/missing.h inspector.o: $(hdrdir)/ruby/ruby.h inspector.o: $(hdrdir)/ruby/st.h @@ -321,6 +321,20 @@ inspector.o: $(hdrdir)/ruby/subst.h inspector.o: inspector.c profile_frames.o: $(RUBY_EXTCONF_H) profile_frames.o: $(arch_hdrdir)/ruby/config.h +profile_frames.o: $(hdrdir)/ruby/assert.h +profile_frames.o: $(hdrdir)/ruby/backward.h +profile_frames.o: $(hdrdir)/ruby/backward/2/assume.h +profile_frames.o: $(hdrdir)/ruby/backward/2/attributes.h +profile_frames.o: $(hdrdir)/ruby/backward/2/bool.h +profile_frames.o: $(hdrdir)/ruby/backward/2/inttypes.h +profile_frames.o: $(hdrdir)/ruby/backward/2/limits.h +profile_frames.o: $(hdrdir)/ruby/backward/2/long_long.h +profile_frames.o: $(hdrdir)/ruby/backward/2/stdalign.h +profile_frames.o: $(hdrdir)/ruby/backward/2/stdarg.h +profile_frames.o: $(hdrdir)/ruby/debug.h +profile_frames.o: $(hdrdir)/ruby/defines.h +profile_frames.o: $(hdrdir)/ruby/intern.h +profile_frames.o: $(hdrdir)/ruby/internal/abi.h profile_frames.o: $(hdrdir)/ruby/internal/anyargs.h profile_frames.o: $(hdrdir)/ruby/internal/arithmetic.h profile_frames.o: $(hdrdir)/ruby/internal/arithmetic/char.h @@ -358,6 +372,7 @@ profile_frames.o: $(hdrdir)/ruby/internal/attr/noexcept.h profile_frames.o: $(hdrdir)/ruby/internal/attr/noinline.h profile_frames.o: $(hdrdir)/ruby/internal/attr/nonnull.h profile_frames.o: $(hdrdir)/ruby/internal/attr/noreturn.h +profile_frames.o: $(hdrdir)/ruby/internal/attr/packed_struct.h profile_frames.o: $(hdrdir)/ruby/internal/attr/pure.h profile_frames.o: $(hdrdir)/ruby/internal/attr/restrict.h profile_frames.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -417,7 +432,6 @@ profile_frames.o: $(hdrdir)/ruby/internal/intern/enumerator.h profile_frames.o: $(hdrdir)/ruby/internal/intern/error.h profile_frames.o: $(hdrdir)/ruby/internal/intern/eval.h profile_frames.o: $(hdrdir)/ruby/internal/intern/file.h -profile_frames.o: $(hdrdir)/ruby/internal/intern/gc.h profile_frames.o: $(hdrdir)/ruby/internal/intern/hash.h profile_frames.o: $(hdrdir)/ruby/internal/intern/io.h profile_frames.o: $(hdrdir)/ruby/internal/intern/load.h @@ -448,32 +462,18 @@ profile_frames.o: $(hdrdir)/ruby/internal/memory.h profile_frames.o: $(hdrdir)/ruby/internal/method.h profile_frames.o: $(hdrdir)/ruby/internal/module.h profile_frames.o: $(hdrdir)/ruby/internal/newobj.h -profile_frames.o: $(hdrdir)/ruby/internal/rgengc.h profile_frames.o: $(hdrdir)/ruby/internal/scan_args.h profile_frames.o: $(hdrdir)/ruby/internal/special_consts.h profile_frames.o: $(hdrdir)/ruby/internal/static_assert.h profile_frames.o: $(hdrdir)/ruby/internal/stdalign.h profile_frames.o: $(hdrdir)/ruby/internal/stdbool.h +profile_frames.o: $(hdrdir)/ruby/internal/stdckdint.h profile_frames.o: $(hdrdir)/ruby/internal/symbol.h profile_frames.o: $(hdrdir)/ruby/internal/value.h profile_frames.o: $(hdrdir)/ruby/internal/value_type.h profile_frames.o: $(hdrdir)/ruby/internal/variable.h profile_frames.o: $(hdrdir)/ruby/internal/warning_push.h profile_frames.o: $(hdrdir)/ruby/internal/xmalloc.h -profile_frames.o: $(hdrdir)/ruby/assert.h -profile_frames.o: $(hdrdir)/ruby/backward.h -profile_frames.o: $(hdrdir)/ruby/backward/2/assume.h -profile_frames.o: $(hdrdir)/ruby/backward/2/attributes.h -profile_frames.o: $(hdrdir)/ruby/backward/2/bool.h -profile_frames.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h -profile_frames.o: $(hdrdir)/ruby/backward/2/inttypes.h -profile_frames.o: $(hdrdir)/ruby/backward/2/limits.h -profile_frames.o: $(hdrdir)/ruby/backward/2/long_long.h -profile_frames.o: $(hdrdir)/ruby/backward/2/stdalign.h -profile_frames.o: $(hdrdir)/ruby/backward/2/stdarg.h -profile_frames.o: $(hdrdir)/ruby/debug.h -profile_frames.o: $(hdrdir)/ruby/defines.h -profile_frames.o: $(hdrdir)/ruby/intern.h profile_frames.o: $(hdrdir)/ruby/missing.h profile_frames.o: $(hdrdir)/ruby/ruby.h profile_frames.o: $(hdrdir)/ruby/st.h diff --git a/ext/-test-/debug/inspector.c b/ext/-test-/debug/inspector.c index f0c58e59f9..25f9d894d3 100644 --- a/ext/-test-/debug/inspector.c +++ b/ext/-test-/debug/inspector.c @@ -8,13 +8,13 @@ callback(const rb_debug_inspector_t *dbg_context, void *data) long i, len = RARRAY_LEN(locs); VALUE binds = rb_ary_new(); for (i = 0; i < len; ++i) { - VALUE entry = rb_ary_new(); - rb_ary_push(binds, entry); - rb_ary_push(entry, rb_debug_inspector_frame_self_get(dbg_context, i)); - rb_ary_push(entry, rb_debug_inspector_frame_binding_get(dbg_context, i)); - rb_ary_push(entry, rb_debug_inspector_frame_class_get(dbg_context, i)); - rb_ary_push(entry, rb_debug_inspector_frame_iseq_get(dbg_context, i)); - rb_ary_push(entry, rb_ary_entry(locs, i)); + VALUE entry = rb_ary_new(); + rb_ary_push(binds, entry); + rb_ary_push(entry, rb_debug_inspector_frame_self_get(dbg_context, i)); + rb_ary_push(entry, rb_debug_inspector_frame_binding_get(dbg_context, i)); + rb_ary_push(entry, rb_debug_inspector_frame_class_get(dbg_context, i)); + rb_ary_push(entry, rb_debug_inspector_frame_iseq_get(dbg_context, i)); + rb_ary_push(entry, rb_ary_entry(locs, i)); } return binds; } diff --git a/ext/-test-/debug/profile_frames.c b/ext/-test-/debug/profile_frames.c index 1656ff7d4b..f9a77a5a78 100644 --- a/ext/-test-/debug/profile_frames.c +++ b/ext/-test-/debug/profile_frames.c @@ -18,19 +18,40 @@ profile_frames(VALUE self, VALUE start_v, VALUE num_v) collected_size = rb_profile_frames(start, buff_size, buff, lines); for (i=0; i<collected_size; i++) { - VALUE ary = rb_ary_new(); - rb_ary_push(ary, rb_profile_frame_path(buff[i])); - rb_ary_push(ary, rb_profile_frame_absolute_path(buff[i])); - rb_ary_push(ary, rb_profile_frame_label(buff[i])); - rb_ary_push(ary, rb_profile_frame_base_label(buff[i])); - rb_ary_push(ary, rb_profile_frame_full_label(buff[i])); - rb_ary_push(ary, rb_profile_frame_first_lineno(buff[i])); - rb_ary_push(ary, rb_profile_frame_classpath(buff[i])); - rb_ary_push(ary, rb_profile_frame_singleton_method_p(buff[i])); - rb_ary_push(ary, rb_profile_frame_method_name(buff[i])); - rb_ary_push(ary, rb_profile_frame_qualified_method_name(buff[i])); - - rb_ary_push(result, ary); + VALUE ary = rb_ary_new(); + rb_ary_push(ary, rb_profile_frame_path(buff[i])); + rb_ary_push(ary, rb_profile_frame_absolute_path(buff[i])); + rb_ary_push(ary, rb_profile_frame_label(buff[i])); + rb_ary_push(ary, rb_profile_frame_base_label(buff[i])); + rb_ary_push(ary, rb_profile_frame_full_label(buff[i])); + rb_ary_push(ary, rb_profile_frame_first_lineno(buff[i])); + rb_ary_push(ary, rb_profile_frame_classpath(buff[i])); + rb_ary_push(ary, rb_profile_frame_singleton_method_p(buff[i])); + rb_ary_push(ary, rb_profile_frame_method_name(buff[i])); + rb_ary_push(ary, rb_profile_frame_qualified_method_name(buff[i])); + rb_ary_push(ary, INT2NUM(lines[i])); + + rb_ary_push(result, ary); + } + + return result; +} + +static VALUE +profile_thread_frames(VALUE self, VALUE thread, VALUE start_v, VALUE num_v) +{ + int i, collected_size; + int start = NUM2INT(start_v); + int buff_size = NUM2INT(num_v); + VALUE buff[MAX_BUF_SIZE]; + int lines[MAX_BUF_SIZE]; + VALUE result = rb_ary_new(); + + if (buff_size > MAX_BUF_SIZE) rb_raise(rb_eRuntimeError, "too long buff_size"); + + collected_size = rb_profile_thread_frames(thread, start, buff_size, buff, lines); + for (i=0; i<collected_size; i++) { + rb_ary_push(result, rb_profile_frame_full_label(buff[i])); } return result; @@ -40,4 +61,5 @@ void Init_profile_frames(VALUE klass) { rb_define_module_function(klass, "profile_frames", profile_frames, 2); + rb_define_module_function(klass, "profile_thread_frames", profile_thread_frames, 3); } |