• 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
symtab.c 10.5 KB