]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: print up to 10 words of arguments
authorRuss Cox <rsc@golang.org>
Thu, 3 Apr 2014 03:00:40 +0000 (23:00 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 3 Apr 2014 03:00:40 +0000 (23:00 -0400)
The old limit of 5 was chosen because we didn't actually know how
many bytes of arguments there were; 5 was a halfway point between
printing some useful information and looking ridiculous.

Now we know how many bytes of arguments there are, and we stop
the printing when we reach that point, so the "looking ridiculous" case
doesn't happen anymore: we only print actual argument words.
The cutoff now serves only to truncate very long (but real) argument lists.

In multiple debugging sessions recently (completely unrelated bugs)
I have been frustrated by not seeing more of the long argument lists:
5 words is only 2.5 interface values or strings, and not even 2 slices.
Double the max amount we'll show.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews, iant, r
https://golang.org/cl/83850043

src/pkg/runtime/traceback_arm.c
src/pkg/runtime/traceback_x86.c

index f5cd4133d46d5f235c24c54e88be4b003e913cbf..dd77fcdfd83e78e8c127cb81891969b8049b4d2d 100644 (file)
@@ -156,7 +156,7 @@ runtime·gentraceback(uintptr pc0, uintptr sp0, uintptr lr0, G *gp, int32 skip,
                                        tracepc -= sizeof(uintptr);
                                runtime·printf("%s(", runtime·funcname(f));
                                for(i = 0; i < frame.arglen/sizeof(uintptr); i++) {
-                                       if(i >= 5) {
+                                       if(i >= 10) {
                                                runtime·prints(", ...");
                                                break;
                                        }
index 4c8074e9e40ae6173f869ba2e3f3623b354760f4..93f33cee1638f27b14474fefaecfe230652c1256 100644 (file)
@@ -217,7 +217,7 @@ runtime·gentraceback(uintptr pc0, uintptr sp0, uintptr lr0, G *gp, int32 skip,
                                        tracepc--;
                                runtime·printf("%s(", runtime·funcname(f));
                                for(i = 0; i < frame.arglen/sizeof(uintptr); i++) {
-                                       if(i >= 5) {
+                                       if(i >= 10) {
                                                runtime·prints(", ...");
                                                break;
                                        }