当我调试我的程序并尝试在即时窗口中执行某些操作时,它有时会在即时窗口中显示错误消息:
由于内存不足,功能评估被禁用 异常。
它还显示了通过将对象悬停在对象上来查看对象的属性时。
在尝试找到问题的原因之后,我将其缩小到这个小代码示例:
using System;
using System.Text.RegularExpressions;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
try
{
//outofmemoryexception can be thrown by Image.FromFile("path/that/does/not/exist.png")
//if the path points to a file that is not an image
throw new OutOfMemoryException();
}
catch (OutOfMemoryException ex)
{
//caught the exception
//so no problem, right?
}
//Random object to use in immediate window
Random rand = new Random();
//Also, try hovering over this regex and take a look at its properties.
var test = new Regex("");
//put a breakpoint here (at the next closing curly brace) and try calling rand.Next() in the immediate window
}
}
}
看起来调试器在发生OutOfMemoryException时会发生异常,即使它被抓住了......
我可以想象,没有人认为可以调试具有OutOfMemoryException的程序。但遗憾的是,当文件不是图像时,Image.FromFile会抛出该错误...
问题:
答案 0 :(得分:0)
是的,这是预期的行为。
您需要让调试器运行(跳过或在下一行放置断点并单击F5)才能从此状态恢复。即使有时候它没有帮助和运行,直到你在堆栈上更高的其他功能通常使调试器再次合作。
请注意,OOM不是唯一的情况 - 即立即窗口中长时间运行的代码会使调试器进入相同的状态。
更多信息 - MSDN Function evaluation is disabled...,SO - Function evaluation disabled because a previous function evaluation timed out