发生异常后在Visual Studio调试器中继续

时间:2020-03-06 15:02:57  来源:igfitidea点击:

当我调试C程序并引发异常(由代码引发或者由框架引发)时,IDE停止运行,并使我进入代码中的相应行。

现在一切都很好。

然后,我按" F5"继续。从这一刻起,它就像我陷入了无限循环。 IDE总是让我回到例外行。我必须按Shift + F5键(停止调试/终止程序)才能离开他。

我在这里与一些同事交谈,他们告诉我,这有时也会发生在他们身上。

发生了什么?

解决方案

一旦获得异常,除非在代码中处理了异常,否则Visual Studio(或者我们可能使用的任何IDE)将不允许我们进行进一步的操作。

此行为是设计使然。

这是因为未处理该异常,并且如果未按某种方式对其进行处理,Visual Studio将无法越过该行。简而言之,这是设计使然。

我们可以做的一件事是将执行点(黄线/箭头)拖放到代码中的上一个点,并修改内存中的值(使用Visual Studio监视窗口),以免它们引起异常。然后再次开始单步执行代码1.

最好是停止执行并修复导致异常的问题,或者在不需要抛出异常的情况下正确处理异常,这是一个更好的主意。

1这可能会产生意想不到的后果,因为我们实际上是在重新执行某些代码(而不是回退执行)。

未捕获的异常将使应用程序崩溃。取而代之的是,VS只会使我们处于未捕获的异常中,我们将不得不终止或者倒退应用程序。

当IDE在有问题的代码行上中断时,它将在执行生成异常的行之前停止。如果继续,它将再次执行该行,并再次获取异常。

如果我们想越过该错误以查看会发生什么情况(如果未发生该错误),则可以将突出显示黄色的行(将在下一条执行的行)向下拖动到有问题的代码之后的下一行代码。当然,根据有问题的代码行无法执行的操作,程序现在可能处于导致其他错误的状态,在这种情况下,我们并没有真正帮助自己,可能应该修复代码,以使异常不会不会发生,或者处理不当。