是否有一种方法可以使编译器在catch子句中自动命中语句(断点)

Is there a way to make the compiler automatically hit a statement(breakpoint) once in catch clause

本文关键字:子句 断点 语句 catch 编译器 一种 方法 是否 可以使      更新时间:2023-10-16

目前我必须在catch子句中设置断点。我想知道是否有一种方法,一旦在catch子句中,编译器就会自动突出显示某个语句。现在我必须在异常处理程序中设置一个断点,以便编译器让我知道它已进入异常处理程序。我使用VS2010

您可以将__debugbreak();(来自<intrin.h>)放在catch子句中,IDE将在__debugbreak();到达时停止。

我不知道有这样的功能。

然而,如果你转到菜单中的Debug > Exceptions,你可以切换异常类型,当它们被抛出时调试器将中断。我知道这与它们被捕获时不一样,但是您应该能够通过从那里执行几个"Step into/over"步骤来达到catch语句。

您可以添加一个ASSERT(FALSE),这将导致调试器在该行停止以进行调试构建。

只是要清楚:至少作为我理解的情况,您希望在特定行上有一个断点,但是当/如果执行特定的catch子句时只能。如果这是你想要的,有很多方法可以做到,尽管(据我所知)你可能需要稍微修改一下你的代码才能使它工作。

我至少可以这样做:

  1. 创建一个全局变量,例如:bool exception_caught;
  2. 在相应的catch子句中,增加exception_caught = true;
  3. exception_caught
  4. 设置断点条件
顺便说一句,我不太记得你是如何在VS 2010中创建条件断点的。在2012年,您可以像往常一样设置断点(例如,使用F9),然后右键单击显示的红点,并从弹出菜单中选择condition...。在旧版本中,您必须单独打开"断点"窗口(但据我回忆,它的菜单项有点难以找到)。