首页 > 教程 > 开发环境中的服务崩溃问题排查

开发环境中的服务崩溃问题排查

时间:2024-04-16 | 来源: | 阅读:157

话题: 崩溃 异常 开发 服务 环境

刚修改的服务,推到开发环境之后,总是时不时的崩溃,但是不知道为什么。尝试找到他的最后一次调用,也没有复现。 没有办法,只能抓dump了。 开启崩溃自动dump,网络上很多,不赘述了。 拿到dump之后,首先看看是什么类型的异常 如图所示,是个栈溢出的异常。 打印一下堆栈,发现密密麻麻的全是这个代码。

刚修改的服务推到开发环境后,经常出现崩溃的情况,但原因却难以捉摸。尝试找到最后一次调用,却无法复现。

为了解决问题,只能进行dump抓取。

开启崩溃自动dump,网络上有很多相关方法,这里就不再赘述。

拿到dump后,首先需要查看异常类型。

从图中可以看出,出现了栈溢出异常。

打印堆栈后,发现代码中充斥着这个异常。

我们找到了这个对象,发现其中的隐式转换代码存在问题。

隐式转换应该是将传入的内容转换为指定的格式,但结果在返回时却返回了传入的类型,导致在尝试转换为目标类型时再次触发了隐式转换,从而导致无限递归。

最后,排查项目中所有类似代码,发现只有这一处存在问题。如果没有使用windbg,基本上很难找到具体原因。Windbg真是牛B。


湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网