【发布时间】:2017-06-09 23:37:27
【问题描述】:
在 Visual Studio 2015 for C# 中,我调试了一个程序。调试器在某处暂停并引发System.StackOverflowException:
在 mscorlib.dll 中发生了“System.StackOverflowException”类型的未处理异常
这意味着正在进行无限递归。
我想找出最初调用了哪个方法,然后导致了异常,所以我转向调用堆栈窗口,但是堆栈太多,以至于最外面的堆栈已经从调用堆栈窗口中截断:
...
Visual Studio 支持的最大堆栈帧数 已超过。
当
System.StackOverflowException发生时,有什么方法可以找出最外面的堆栈吗?有没有办法限制在引发
System.StackOverflowException之前的最大堆栈帧数,以便所有堆栈帧都可以显示在“调用堆栈”窗口中?
谢谢。
【问题讨论】:
-
第一次看到第二条消息时,当我遇到 Stackoverflow 异常时,总是可以查看调用堆栈。
-
您是否看不到足够的堆栈以了解您的调用周期在哪里,然后从那里开始工作?
-
使用ETW to trace Exception raising,在这里您可以看到引发异常时的堆栈。使用 WPR 和我的配置文件来捕获数据并分析 WPA 中的 ETL
标签: c# visual-studio