V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sunshinev
V2EX  ›  程序员

golang panic 不打印参数地址怎么办,是三个点

  •  
  •   sunshinev ·
    sunshinev · Jul 17, 2020 · 1947 views
    This topic created in 2121 days ago, the information mentioned may be changed or developed.
    2020/07/17 20:01:56 0xc0000721e0 1
    panic: wtf
    
    goroutine 1 [running]:
    main.run(...)
    	/www/xx/go/test/main.go:18
    main.main()
    	/www/xx/go/test/main.go:13 +0xd0
    
    Process finished with exit code 2
    
    

    为什么 run 里面是...

    代码如下:

    func main() {
    	a := "1"
    	run(a)
    }
    
    func run(a string) {
    	log.Println(a)
    	panic("wtf")
    }
    
    
    1 replies    2020-07-17 22:11:50 +08:00
    katsusan
        1
    katsusan  
       Jul 17, 2020
    run 函数被内联了,可以在编译时加入-gcflags "-l"禁止内联。

    ➜ /tmp go build -gcflags "-m" panic.go
    # command-line-arguments
    ./panic.go:10:6: can inline run
    ./panic.go:5:6: can inline main
    ./panic.go:7:5: inlining call to run
    ./panic.go:7:5: main ... argument does not escape
    ./panic.go:7:5: a escapes to heap
    ./panic.go:10:10: leaking param: a
    ./panic.go:11:13: run ... argument does not escape
    ./panic.go:11:13: a escapes to heap
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   959 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 19:53 · PVG 03:53 · LAX 12:53 · JFK 15:53
    ♥ Do have faith in what you're doing.