我们都知道,死机会产生stdout(Playground link)的堆栈跟踪。
panic: runtime error: index out of range
goroutine 1 [running]:
main.main()
/tmp/sandbox579134920/main.go:9 +0x20
当您从死机中恢复时,recover()
似乎只返回error
,它描述了导致死机的原因(Playground link)。
runtime error: index out of range
我的问题是,是否可以存储写入stdout的stacktrace?这比字符串runtime error: index out of range
提供了更好的调试信息,因为它显示了文件中导致死机的确切行。
3条答案
按热度按时间l5tcr1uw1#
就像上面提到的@Volker,以及作为评论发布的内容,我们可以使用
runtime/debug
包。印刷品
Playground link。
tquggr8v2#
创建一个日志文件,将stacktrace添加到stdout或stderr的文件中。这将在文件中添加包含错误行的时间在内的数据。
Go playground上的工作示例
brgchamk3#
以下是将死机转换为错误的解决方案,并像记录任何其他错误一样记录stacktrace
Go Playground输出