我在c00000fd中得到了一个带有执行代码ntdll.dll (STATUS_STACK_OVERFLOW)的应用程序。
这是否意味着在本机代码中的某个地方,在我的托管代码之外存在堆栈溢出?因为对于托管代码,我们有System.StackOverflowException
。但在我的例子中没有,也没有堆栈跟踪可以提供线索。
发布于 2018-10-25 02:12:18
你再也抓不到System.StackOverflowException
了
从.Net 2.0开始,只能在以下情况下捕捉到它们。
虽然错误说它发生在ntdll.dll中,但它很可能是由代码引起的。
我的第一步是在生产中添加或打开最高的调试日志记录,这样您就可以缩小发生的地方和情况。
其次,我将开始调试(附加调试器)并仔细检查该方法类,直到您找到它为止。很可能是因为一些递归,这是我第一个开始寻找的地方。
附加资源和参考资料
如何在我的应用程序中找到StackOverflowException的来源
如何在没有源代码链接的情况下调试System.StackOverflowException?
如何防止和/或处理StackOverflowException?
故障排除异常: System.StackOverflowException
在.NET Framework1.0和1.1中,您可以捕获一个StackOverflowException对象(例如,从无限递归中恢复)。从.NET Framework2.0开始,您无法捕获带有try/catch块的StackOverflowException对象,默认情况下相应的进程将终止。因此,您应该编写代码来检测和防止堆栈溢出。例如,如果应用程序依赖于递归,则使用计数器或状态条件终止递归循环。
https://stackoverflow.com/questions/52980232
复制相似问题