记一次 .NET某企业数字化平台 崩溃分析
原文中文,约7100字,阅读约需17分钟。
📝
内容提要
本文讲述了一个软件崩溃的故事,作者使用WinDbg分析了崩溃原因,发现是栈溢出导致的异常。作者定位到了栈溢出线程,并发现是SqlSugar库导致的。最后建议作者改变写法以避免栈溢出。
❓
Q&A
如何使用WinDbg分析软件崩溃的原因?
使用WinDbg时,可以通过打开dump文件自动定位崩溃时的寄存器和线程栈上下文,分析异常信息。
栈溢出异常的代码是什么?
栈溢出异常的代码为c00000fd,表示当前栈溢出。
SqlSugar库是如何导致栈溢出的?
SqlSugar库在处理大数据量时,用户代码的递归调用导致了栈溢出。
如何避免栈溢出的问题?
建议修改代码逻辑,避免使用递归,改用循环等方式来处理数据。
在分析崩溃时,如何定位到栈溢出线程?
可以通过调用栈分析,使用kc命令观察调用栈,找到栈溢出线程。
崩溃分析中如何确认异常的来源?
通过分析调用栈和用户代码的调用方式,可以确认异常的来源。
🏷️