gpt4 book ai didi

c# - .Net 应用程序中带有 STATUS_STACK_OVERFLOW 的应用程序崩溃是否意味着堆栈溢出发生在 native 代码中?

转载 作者:行者123 更新时间:2023-12-03 16:19:23 25 4
gpt4 key购买 nike

我在 ntdll.dll 中得到一个带有执行代码 c00000fd (STATUS_STACK_OVERFLOW) 的应用程序崩溃。

这是否意味着在我的托管代码之外的 native 代码中某处存在堆栈溢出?因为对于托管代码,我们有 System.StackOverflowException .但在我的情况下没有,也没有可以提供线索的堆栈跟踪。

最佳答案

你抓不到System.StackOverflowException再多的

Starting with .Net 2.0 they can only be caught in the followingcircumstances.

  • The CLR is being run in a hosted environment where the host specifically allows for StackOverflow exceptions to be handled
  • The stackoverflow exception is thrown by user code and not due to an actual stack overflow situation (Reference)

虽然错误说它发生在 ntdll.dll 中,但很可能是由您的代码引起的。
我的第一步是添加或打开生产中的最高调试日志记录,这样您就可以尝试缩小它发生的位置和情况。
其次,我将开始调试(附加调试器)并仔细检查该方法类,直到找到它。很可能是由于一些递归,这是我开始寻找的第一个地方。

其他资源和引用资料
C# catch a stack overflow exception
How to find the source of a StackOverflowException in my application
How to debug System.StackOverflowException without link to source code?
How do I prevent and/or handle a StackOverflowException?
How to debug a stackoverflowexception in .NET
Troubleshooting Exceptions: System.StackOverflowException
StackOverflowException Class

In the .NET Framework 1.0 and 1.1, you could catch aStackOverflowException object (for example, to recover from unboundedrecursion). Starting with the .NET Framework 2.0, you can’t catch aStackOverflowException object with a try/catch block, and thecorresponding process is terminated by default. Consequently, youshould write your code to detect and prevent a stack overflow. Forexample, if your app depends on recursion, use a counter or a statecondition to terminate the recursive loop.

关于c# - .Net 应用程序中带有 STATUS_STACK_OVERFLOW 的应用程序崩溃是否意味着堆栈溢出发生在 native 代码中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52980232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com