ruby-changes:17551
From: ko1 <ko1@a...>
Date: Sat, 23 Oct 2010 11:03:02 +0900 (JST)
Subject: [ruby-changes:17551] Ruby:r29556 (trunk): * vm_dump.c (rb_vm_bugreport): fix to add bug outputs.
ko1 2010-10-23 11:02:50 +0900 (Sat, 23 Oct 2010) New Revision: 29556 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29556 Log: * vm_dump.c (rb_vm_bugreport): fix to add bug outputs. - loaded script ($0) - loaded features ($") - process memory map on Linux (/proc/self/maps) * vm_dump.c (rb_vmdebug_stack_dump_raw): fix header message. Modified files: trunk/ChangeLog trunk/vm_dump.c Index: ChangeLog =================================================================== --- ChangeLog (revision 29555) +++ ChangeLog (revision 29556) @@ -1,3 +1,12 @@ +Sat Oct 23 10:55:37 2010 Koichi Sasada <ko1@a...> + + * vm_dump.c (rb_vm_bugreport): fix to add bug outputs. + - loaded script ($0) + - loaded features ($") + - process memory map on Linux (/proc/self/maps) + + * vm_dump.c (rb_vmdebug_stack_dump_raw): fix header message. + Fri Oct 22 14:50:13 2010 Nobuyoshi Nakada <nobu@r...> * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert): Index: vm_dump.c =================================================================== --- vm_dump.c (revision 29555) +++ vm_dump.c (revision 29556) @@ -170,12 +170,13 @@ } #endif - fprintf(stderr, "-- control frame ----------\n"); + fprintf(stderr, "-- Control frame information " + "-----------------------------------------------\n"); while ((void *)cfp < (void *)(th->stack + th->stack_size)) { control_frame_dump(th, cfp); cfp++; } - fprintf(stderr, "---------------------------\n"); + fprintf(stderr, "\n"); } void @@ -761,7 +762,8 @@ void rb_vm_bugreport(void) { - if (GET_THREAD()->vm) { + rb_vm_t *vm = GET_VM(); + if (vm) { int i = 0; SDR(); @@ -797,5 +799,37 @@ } fprintf(stderr, "\n"); -#endif +#endif /* HAVE_BACKTRACE */ + + fprintf(stderr, "-- Other runtime information " + "-----------------------------------------------\n\n"); + { + int i; + + fprintf(stderr, "* Loaded script: %s\n", StringValueCStr(vm->progname)); + fprintf(stderr, "\n"); + fprintf(stderr, "* Loaded features:\n\n"); + for (i=0; i<RARRAY_LEN(vm->loaded_features); i++) { + fprintf(stderr, " %4d %s\n", i, StringValueCStr(RARRAY_PTR(vm->loaded_features)[i])); + } + fprintf(stderr, "\n"); + +#if __linux__ + { + FILE *fp = fopen("/proc/self/maps", "r"); + if (fp) { + fprintf(stderr, "* Process memory map:\n\n"); + + while (!feof(fp)) { + char buff[0x100]; + size_t rn = fread(buff, 1, 0x100, fp); + fwrite(buff, 1, rn, stderr); + } + + fclose(fp); + fprintf(stderr, "\n\n"); + } + } +#endif /* __linux__ */ + } } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/