【问题标题】:removing module path in trace in go在 go 中删除跟踪中的模块路径
【发布时间】:2020-09-10 14:11:27
【问题描述】:

我需要删除跟踪中的绝对路径,它对应于导入的模块。即使我这样编译我的程序:go build -gcflags=-trimpath=$GOPATH -asmflags=-trimpath=$GOPATH 我仍然得到模块文件的完整路径,出现了恐慌,尽管程序的非模块文件没有显示完整路径:

goroutine 1 [running]:
monitors/fibre_monitor/logging.FileHandler(0x5e6755, 0x1a, 0x441, 0x0, 0x6fc23ac00, 0x1, 0x500000, 0xc000000002, 0xb)
        /home/gtristan/go/src/monitors/fibre_monitor/logging/file_handler.go:182 +0x11f
main.python_logger(0x5e1383, 0x5, 0x5e6755, 0x1a, 0x101)
        src/monitors/fibre_monitor/fibre_monitor.go:73 +0x1b5
main.main_check(0x0, 0xc00008e058)
        src/monitors/fibre_monitor/fibre_monitor.go:343 +0x65
main.main()
        src/monitors/fibre_monitor/fibre_monitor.go:428 +0x56

有什么解决方案可以在跟踪中到处摆脱 GOPATH?

【问题讨论】:

    标签: go module trace gopath


    【解决方案1】:

    go build 使用-trimpath 参数(而不是gcflagsasmflags):

    没有-trimpath

    $ go build .
    $ ./panic 
    panic: bleh
    
    goroutine 1 [running]:
    main.example(0xc000046738, 0x2, 0x4, 0x473f2b, 0x5, 0xa)
        /home/me/stuff/src/github.com/me/testing/panic/main.go:9 +0x39
    main.main()
        /home/me/stuff/src/github.com/me/testing/panic/main.go:4 +0x72
    

    -trimpath:

    $ go build -trimpath  .
    $ ./panic 
    panic: bleh
    
    goroutine 1 [running]:
    main.example(0xc000046738, 0x2, 0x4, 0x473f2b, 0x5, 0xa)
        github.com/me/testing/panic/main.go:9 +0x39
    main.main()
        github.com/me/testing/panic/main.go:4 +0x72
    
    

    go help build

        -trimpath
            remove all file system paths from the resulting executable.
            Instead of absolute file system paths, the recorded file names
            will begin with either "go" (for the standard library),
            or a module path@version (when using modules),
            or a plain import path (when using GOPATH).
    

    【讨论】:

    • 哦,谢谢!现在路径看起来有点奇怪,但它符合我的目的:)
    • 我最终编译为:go build -gcflags=-trimpath=$GOPATH -asmflags=-trimpath=$GOPATH -trimpath(除了其他标志外还添加了 -trimpath),因为否则跟踪显示 command-line-arguments/fibre_monitor.go - main.python_logger:90 ,其中命令行参数是看起来很奇怪的东西。但现在一切都很完美。对不起,我没有足够的分数来投票,所以没有投票赞成你的答案:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    相关资源
    最近更新 更多