env GOPRIVATE=test/main # Tiny mode garble -tiny build ! binsubstr main$exe 'main.go' 'fmt/print.go' env GODEBUG='allocfreetrace=1,gcpacertrace=1,gctrace=1,inittrace=1,scavenge=1,scavtrace=1,scheddetail=1,schedtrace=10' ! exec ./main$exe stderr '^\(0x[\d\w]{6,8},0x[\d\w]{6,8}\)' # interfaces/pointers print correctly # TODO: Make -tiny remove all line information again. # Right now, we reset each declaration's start line to 1. # Better than nothing, but we could still make *all* line numbers 1. # stderr '^caller: \? 0$' # position info is removed stderr '^caller: \?\? ' # position info is removed stderr '^recovered: ya like jazz?' ! stderr 'panic: oh noes' # panics are hidden [short] stop # no need to verify this with -short # Default mode env GODEBUG= garble build ! exec ./main$exe stderr '^caller: \w\.go [1-9]' stderr '^recovered: ya like jazz?' stderr 'panic: oh noes' -- go.mod -- module test/main go 1.15 -- main.go -- package main import "runtime" func main() { var v interface{} = "tada" println(v) defer func() { if r := recover(); r != nil { println("recovered:", r.(string)) panic("oh noes") } }() _, file, line, _ := runtime.Caller(0) println("caller:", file, line) panic("ya like jazz?") }