记一次栈溢出异常问题的排查
刚修改的服务,推到开发环境之后,总是时不时的崩溃,但是不知道为什么。尝试找到他的最后一次调用,也没有复现。
没有办法,只能抓dump了。
开启崩溃自动dump,网络上很多,不赘述了。
拿到dump之后,首先看看是什么类型的异常
如图所示,是个栈溢出的异常。
打印一下堆栈,发现密密麻麻的全是这个代码。
我们找到这个对象,发现里边有个隐式转换的代码有点问题。
隐式转换的应该是将传入的内容转为转出的格式,结果在返回的时候,返回了传入的类型,导致,他想要转成目标类型的时候,又触发了隐式转换,然后就无限递归了。
最后排查项目中所有的类似代码,发现只有这一处,没有windbg基本上很难排查到具体原因。 windbg 牛B