gpt4 book ai didi

c# - 捕获 OutOfMemoryException 使调试变得困难

转载 作者:行者123 更新时间:2023-11-30 18:27:55 25 4
gpt4 key购买 nike

当我调试程序并尝试在即时窗口中执行某些操作时,它有时会在即时窗口中显示一条错误消息:

The function evaluation was disabled because of an out of memory exception.

它还显示了通过将鼠标悬停在对象上查看对象的属性时。

在试图找到问题的原因之后,我将其缩小到这个小代码示例:

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 会抛出该错误...

问题:

  1. 上面的代码示例是否会给其他人带来问题?
  2. 有人可以澄清一下吗?为什么会发生这种情况?
  3. 最后,我该如何防止这种情况发生?

最佳答案

是的,这是预期的行为。

您需要让调试器运行(跳过或在下一行放置断点并单击 F5)才能从这种状态中恢复。即便如此,有时它也无济于事,运行直到您在堆栈上击中其他更高的功能通常会使调试器再次合作。

请注意,OOM 不是唯一的情况 - 即在立即窗口中长时间运行的代码将使调试器进入相同的状态。

更多信息 - MSDN Function evaluation is disabled... , 所以 - Function evaluation disabled because a previous function evaluation timed out

关于c# - 捕获 OutOfMemoryException 使调试变得困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25940201/

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