• Russ Cox's avatar
    runtime: simplify stack traces · 03e9ea5b
    Russ Cox authored
    Make the stack traces more readable for new
    Go programmers while preserving their utility for old hands.
    
    - Change status number [4] to string.
    - Elide frames in runtime package (internal details).
    - Swap file:line and arguments.
    - Drop 'created by' for main goroutine.
    - Show goroutines in order of allocation:
      implies main goroutine first if nothing else.
    
    There is no option to get the extra frames back.
    Uncomment 'return 1' at the bottom of symtab.c.
    
    $ 6.out
    throw: all goroutines are asleep - deadlock!
    
    goroutine 1 [chan send]:
    main.main()
           /Users/rsc/g/go/src/pkg/runtime/x.go:22 +0x8a
    
    goroutine 2 [select (no cases)]:
    main.sel()
           /Users/rsc/g/go/src/pkg/runtime/x.go:11 +0x18
    created by main.main
           /Users/rsc/g/go/src/pkg/runtime/x.go:19 +0x23
    
    goroutine 3 [chan receive]:
    main.recv(0xf8400010a0, 0x0)
           /Users/rsc/g/go/src/pkg/runtime/x.go:15 +0x2e
    created by main.main
           /Users/rsc/g/go/src/pkg/runtime/x.go:20 +0x50
    
    goroutine 4 [chan receive (nil chan)]:
    main.recv(0x0, 0x0)
           /Users/rsc/g/go/src/pkg/runtime/x.go:15 +0x2e
    created by main.main
           /Users/rsc/g/go/src/pkg/runtime/x.go:21 +0x66
    $
    
    $ 6.out index
    panic: runtime error: index out of range
    
    goroutine 1 [running]:
    main.main()
            /Users/rsc/g/go/src/pkg/runtime/x.go:25 +0xb9
    $
    
    $ 6.out nil
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal 0xb code=0x1 addr=0x0 pc=0x22ca]
    
    goroutine 1 [running]:
    main.main()
            /Users/rsc/g/go/src/pkg/runtime/x.go:28 +0x211
    $
    
    $ 6.out panic
    panic: panic
    
    goroutine 1 [running]:
    main.main()
            /Users/rsc/g/go/src/pkg/runtime/x.go:30 +0x101
    $
    
    R=golang-dev, qyzhai, n13m3y3r, r
    CC=golang-dev
    https://golang.org/cl/4907048
    03e9ea5b
Name
Last commit
Last update
..
bench Loading commit data...
bugs Loading commit data...
chan Loading commit data...
fixedbugs Loading commit data...
garbage Loading commit data...
interface Loading commit data...
ken Loading commit data...
nilptr Loading commit data...
syntax Loading commit data...
235.go Loading commit data...
64bit.go Loading commit data...
append.go Loading commit data...
args.go Loading commit data...
assign.go Loading commit data...
assign1.go Loading commit data...
bigalg.go Loading commit data...
bigmap.go Loading commit data...
blank.go Loading commit data...
blank1.go Loading commit data...
chancap.go Loading commit data...
char_lit.go Loading commit data...
char_lit1.go Loading commit data...
closedchan.go Loading commit data...
closure.go Loading commit data...
cmp1.go Loading commit data...
cmp2.go Loading commit data...
cmp3.go Loading commit data...
cmp4.go Loading commit data...
cmp5.go Loading commit data...
cmp6.go Loading commit data...
cmplx.go Loading commit data...
cmplxdivide.c Loading commit data...
cmplxdivide.go Loading commit data...
cmplxdivide1.go Loading commit data...
complit.go Loading commit data...
compos.go Loading commit data...
const.go Loading commit data...
const1.go Loading commit data...
const2.go Loading commit data...
const3.go Loading commit data...
convert.go Loading commit data...
convert3.go Loading commit data...
convlit.go Loading commit data...
convlit1.go Loading commit data...
copy.go Loading commit data...
ddd.go Loading commit data...
ddd1.go Loading commit data...
ddd2.go Loading commit data...
ddd3.go Loading commit data...
decl.go Loading commit data...
declbad.go Loading commit data...
defer.go Loading commit data...
deferprint.go Loading commit data...
divide.go Loading commit data...
empty.go Loading commit data...
env.go Loading commit data...
eof.go Loading commit data...
eof1.go Loading commit data...
errchk Loading commit data...
escape.go Loading commit data...
float_lit.go Loading commit data...
floatcmp.go Loading commit data...
for.go Loading commit data...
func.go Loading commit data...
func1.go Loading commit data...
func2.go Loading commit data...
func3.go Loading commit data...
func4.go Loading commit data...
func5.go Loading commit data...
func6.go Loading commit data...
func7.go Loading commit data...
gc.go Loading commit data...
gc1.go Loading commit data...
gc2.go Loading commit data...
golden.out Loading commit data...
goprint.go Loading commit data...
goto.go Loading commit data...
hashmap.go Loading commit data...
helloworld.go Loading commit data...
if.go Loading commit data...
import.go Loading commit data...
import1.go Loading commit data...
import2.go Loading commit data...
import3.go Loading commit data...
import4.go Loading commit data...
index.go Loading commit data...
indirect.go Loading commit data...
indirect1.go Loading commit data...
init.go Loading commit data...
initcomma.go Loading commit data...
initialize.go Loading commit data...
initializerr.go Loading commit data...
initsyscall.go Loading commit data...
int_lit.go Loading commit data...
intcvt.go Loading commit data...
iota.go Loading commit data...
label.go Loading commit data...
label1.go Loading commit data...
literal.go Loading commit data...
malloc1.go Loading commit data...
mallocfin.go Loading commit data...
mallocrand.go Loading commit data...
mallocrep.go Loading commit data...
mallocrep1.go Loading commit data...
map.go Loading commit data...
method.go Loading commit data...
method1.go Loading commit data...
method2.go Loading commit data...
method3.go Loading commit data...
named.go Loading commit data...
named1.go Loading commit data...
nil.go Loading commit data...
nul1.go Loading commit data...
parentype.go Loading commit data...
peano.go Loading commit data...
printbig.go Loading commit data...
range.go Loading commit data...
recover.go Loading commit data...
recover1.go Loading commit data...
recover2.go Loading commit data...
recover3.go Loading commit data...
rename.go Loading commit data...
rename1.go Loading commit data...
run Loading commit data...
runtime.go Loading commit data...
shift1.go Loading commit data...
shift2.go Loading commit data...
sieve.go Loading commit data...
sigchld.go Loading commit data...
simassign.go Loading commit data...
sinit.go Loading commit data...
sizeof.go Loading commit data...
solitaire.go Loading commit data...
stack.go Loading commit data...
string_lit.go Loading commit data...
stringrange.go Loading commit data...
switch.go Loading commit data...
switch1.go Loading commit data...
test0.go Loading commit data...
turing.go Loading commit data...
typeswitch.go Loading commit data...
typeswitch1.go Loading commit data...
typeswitch2.go Loading commit data...
undef.go Loading commit data...
utf.go Loading commit data...
varerr.go Loading commit data...
varinit.go Loading commit data...
vectors.go Loading commit data...
zerodivide.go Loading commit data...