[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]