我编写了一些具有很多递归的代码,这需要花费大量时间才能完成。每当我“暂停”运行以查看发生了什么时,我都会得到:



我想我明白那是什么意思。但是,令我感到困惑的是,在执行步骤后,代码不再“优化”,而我可以查看变量。这是怎么发生的?代码如何在优化和非优化代码之间来回翻转?

最佳答案

调试器使用FuncEval来允许您“查看”变量。 FuncEval要求在GarbageCollector安全点在托管代码中停止线程。在IDE中手动“暂停”运行会导致所有线程尽快停止。您的高度递归代码将倾向于在不安全的地方停止。因此,调试器无法评估表达式。
按F10将移至下一个Funceval Safe点,并将启用功能评估。
有关更多信息,请查看rules of FuncEval

09-06 14:16