jjzjj

StackOverflowException

全部标签

c# - 如何跟踪.NET中StackOverflowException的原因?

运行以下代码时,我得到StackOverflowException:privatevoidMyButton_Click(objectsender,EventArgse){MyButton_Click_Aux();}privatestaticvolatileintreportCount;privatestaticvoidMyButton_Click_Aux(){try{/*removebecausestackoverflowswithout*/}finally{varmyLogData=newArrayList();myLogData.Add(reportCount);myLogData

c# - 为什么 .NET 在抛出 StackOverflowException 时表现如此糟糕?

我知道.NET中的StackOverflowExceptions无法被捕获、取消其进程并且没有堆栈跟踪。这是官方记录的onMSDN.但是,我想知道这种行为背后的技术(或其他)原因是什么。MSDN所说的是:Inpriorversionsofthe.NETFramework,yourapplicationcouldcatchaStackOverflowExceptionobject(forexample,torecoverfromunboundedrecursion).However,thatpracticeiscurrentlydiscouragedbecausesignificanta

c# - 为什么 .NET 在抛出 StackOverflowException 时表现如此糟糕?

我知道.NET中的StackOverflowExceptions无法被捕获、取消其进程并且没有堆栈跟踪。这是官方记录的onMSDN.但是,我想知道这种行为背后的技术(或其他)原因是什么。MSDN所说的是:Inpriorversionsofthe.NETFramework,yourapplicationcouldcatchaStackOverflowExceptionobject(forexample,torecoverfromunboundedrecursion).However,thatpracticeiscurrentlydiscouragedbecausesignificanta

c# - 如何检测到 StackOverflowException?

TL;TR当我问这个问题时,我假设了StackOverflowException是一个防止应用程序无限运行的机制。这不是真的。AStackOverflowException未被检测到。它被抛出时堆栈没有分配更多内存的能力。[原问题:]这是一个普遍的问题,每种编程语言可能有不同的答案。我不确定C#以外的语言如何处理堆栈溢出。我今天正在经历异常并一直在想如何StackOverflowException可以检测到。我相信不可能说f.e.如果堆栈是1000次调用深度,则抛出异常。因为也许在某些情况下,正确的逻辑会那么深。在我的程序中检测到无限循环背后的逻辑是什么?StackOverflowEx

c# - 如何检测到 StackOverflowException?

TL;TR当我问这个问题时,我假设了StackOverflowException是一个防止应用程序无限运行的机制。这不是真的。AStackOverflowException未被检测到。它被抛出时堆栈没有分配更多内存的能力。[原问题:]这是一个普遍的问题,每种编程语言可能有不同的答案。我不确定C#以外的语言如何处理堆栈溢出。我今天正在经历异常并一直在想如何StackOverflowException可以检测到。我相信不可能说f.e.如果堆栈是1000次调用深度,则抛出异常。因为也许在某些情况下,正确的逻辑会那么深。在我的程序中检测到无限循环背后的逻辑是什么?StackOverflowEx

.net - 众所周知的 "Process is terminated due to StackOverflowException"屏幕是怎么出现的?

一个奇怪的问题:如果当前进程的堆栈已满,那么众所周知的“由于StackOverflowException而终止进程”屏幕是如何出现的?是运行时为其优雅降级保存了一些寄存器,还是可能运行另一个显示此屏幕的临时进程的内部技巧?附:知道这个问题的可能答案可以帮助某人从类似的严重故障情况中建立自己的“优雅降级(假设显示此类消息的功能非常有限)”。 最佳答案 此消息由CLR显示。可以在SSCLI20发行版中看到代码,clr/src/vm/eepolicy.cpp源代码文件:voidDisplayStackOverflowException()

.net - 众所周知的 "Process is terminated due to StackOverflowException"屏幕是怎么出现的?

一个奇怪的问题:如果当前进程的堆栈已满,那么众所周知的“由于StackOverflowException而终止进程”屏幕是如何出现的?是运行时为其优雅降级保存了一些寄存器,还是可能运行另一个显示此屏幕的临时进程的内部技巧?附:知道这个问题的可能答案可以帮助某人从类似的严重故障情况中建立自己的“优雅降级(假设显示此类消息的功能非常有限)”。 最佳答案 此消息由CLR显示。可以在SSCLI20发行版中看到代码,clr/src/vm/eepolicy.cpp源代码文件:voidDisplayStackOverflowException()

如何找到``System.stackoverflowException''升级时找出最多的堆栈?

在C#的VisualStudio2015中,我调试了一个程序。调试器暂停某个地方并抬高System.StackOverflowException:MSCORLIB.DLL中发生了一个未经处理的“System.StackoverFlowException”类型的例外这意味着正在进行无限的递归。我想找出最初调用了哪种方法,然后导致例外,因此我转到“呼叫堆栈”窗口,但是有很多堆栈,以至于最多的堆栈已从“呼叫堆栈”窗口中截断:...超过了VisualStudio支持的最大堆栈帧数量。有什么方法可以找出最多的堆栈System.StackOverflowException发生?是否有某种方法可以限制之前的

c# - system.stackoverflowexception 无法计算表达式,因为当前线程处于堆栈溢出状态

当代码遇到此函数时,我收到System.StackOverFlowException。其中stringtype是用户定义的元组,等于类型库中的int函数。publicstaticboolEquals(StringTypeleftHand,StringTyperightHand){if(leftHand==rightHand){returntrue;}if((leftHand=="0")||(rightHand=="0")){returnfalse;}return(leftHand.myValue.Equals(rightHand.myValue)&&leftHand.myState.E

java - 计算用于检查 StackOverflowException 的方法调用堆栈大小

今天早上我回答了一个与StackoverflowException相关的问题。有人问过什么时候发生Stackoverflow异常请参阅此链接SimplestwaystocausestackoverflowinC#,C++andJava所以我的问题是,有没有什么方法可以在我们的程序中动态计算方法调用堆栈的大小,然后在调用方法之前应用检查,检查方法调用堆栈是否有空间容纳它,以防止StackOverflowException。因为我是一个java人,我正在寻找java,但也在寻找与不受任何编程语言限制的概念相关的解释。 最佳答案 JVM可