dongyaoxiu6244 2015-05-27 11:39
浏览 83
已采纳

Golang错误报告功能如何获取编译信息

How can a function establish the following details from the runtime so that it can craft appropriate error reporting as part of a error library to be used using in many products (we are changing over to golang):

  • Compilation date and time of the executable
  • Compilation machine used to create the executable

I would like to be able to retrieve both of these to augment the various file revision numbers that I can report along with some stack trace information

Useful related but off-topic information:
- You can get stack traces out of the runtime as illustrated here http://technosophos.com/2014/03/19/generating-stack-traces-in-go.html
- The reflect package http://golang.org/pkg/reflect/ can be used to examine an identified function

Thank you for your assistance,
Richard

  • 写回答

1条回答 默认 最新

  • dongzi1209 2015-05-27 11:44
    关注

    You can use the -X linker flag to set the value of a string variable when building:

    go build -ldflags "-X main.Uname '$(uname -a)' -X main.CompileTime '$(date)'"
    

    With such command, this code

    package main
    
    import "fmt"
    
    // Set by the linker.
    var CompileTime, Uname string
    
    func main() {
        fmt.Println(Uname)
        fmt.Println(CompileTime)
    }
    

    will print something like

    Linux user 3.13.0-53 Wed May 20 10:34:39 UTC 2015 x86_64 GNU/Linux
    Wed May 27 12:00:00 UTC 2015
    

    See the linker docs for more info.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 能给我一些人生建议吗
  • ¥15 mac电脑,安装charles后无法正常抓包
  • ¥18 visio打开文件一直显示文件未找到
  • ¥15 请教一下,openwrt如何让同一usb储存设备拔插后设备符号不变?
  • ¥30 使用quartz框架进行分布式任务定时调度,启动了两个实例,但是只有一个实例参与调度,另外一个实例没有参与调度,不知道是为什么?请各位帮助看一下原因!!
  • ¥50 怎么获取Ace Editor中的python代码后怎么调用Skulpt执行代码
  • ¥30 fpga基于dds生成幅值相位频率和波形可调的容易信号发生器。
  • ¥15 R语言shiny包和ncdf4包报错
  • ¥15 origin绘制有显著差异的柱状图和聚类热图
  • ¥20 simulink实现滑模控制和pid控制对比,提现前者优势