当前位置: 首页 > 网络应用技术

GO1.17新功能,优化错误堆栈

时间:2023-03-07 00:11:25 网络应用技术

  在日常工程中,我们经常使用异常恐慌的记录和跟踪。最常见的是,在在线恐慌之后,我们总是想从中找到一些线索。

  我们中的许多人看着恐慌看他的呼叫堆栈。然后开始猜测并查看代码。

  由于知道引起的参数,因此检查问题非常方便。出于此原因,在GO1.17中,对该作品的堆栈信息显示的官方优化进行了优化,以使其更加友好。

  结合我们通常使用的恐慌案。如下:

  操作结果:

  我们功能的执行是:,核心注意该方法的调用堆栈信息:

  显然,它只是该函数的三个参数,但是它输出了一堆,这与非常清楚的相对应。

  实际对应的是:

  这里的问题在于,称为堆栈的人还必须了解基本数据结构(例如:切片,字符串,int等)。该结构有点麻烦。

  从运行过程的角度来看,此级别不是直观和准确的。

  最后,通话堆栈查看了GO1.17的正式改进。如下:

  呼叫堆栈信息的新版本会更改:

  在GO语言的版本中,堆栈中的函数参数被基于内存布局打印为十六进制值的形式,这更难读取。

  GO1.17之后,每个函数的参数将分别打印,并将复合数据类型的参数(例如结构,阵列,切片等)包裹在大括号中。总体而言,总体上更容易阅读

  实际的对应如下:

  这里还有一个细节要注意。您会发现go1.17的函数参数数量小于上一个版本。这是因为该函数的返回值存在于寄存器中,并且不存储在内存中。

  因此,函数返回值可能不准确,因此不会在新版本中打印。

  在新版本的GO1.17中,堆栈堆栈的功能参数的可读性已进一步优化和调整,随后的使用可能会带来一定量的误差效率提高。

  您通常使用调用堆栈检查问题。您想获得什么帮助?

  如果您有任何疑问,请欢迎评论领域的反馈和交流,最好的关系是相互实现。对您的称赞是制造炸鱼的最大动力。感谢您的支持。

  文章不断更新,您可以搜索[炸鱼中的大脑]以阅读,回复[000]我有第一个大型工厂面试算法访谈算法解决方案和信息;本文githubgithub.com/eddycjy/blog已包括在内。

  作者:炸鱼Eddycjy