在局部变量值上设置Visual Studio(条件)断点

时间:2009-10-28 07:15:21

标签: c++ visual-studio debugging stl

我正在尝试调试一个方法,该方法除了其他功能之外,还将项添加到方法本地的列表中。

然而,每隔一段时间,列表大小就会被设置为零“中游”。我想设置调试器在列表大小变为零时中断,但我不知道如何,并且会感谢有关如何执行此操作的任何指示。

感谢。

4 个答案:

答案 0 :(得分:5)

答案 1 :(得分:3)

在C#中

if(theList.Count == 0){
  //do something meaningless here .e.g.
  int i = 1; //  << set your breakpoint here
}
在VB.NET中

If theList.Count = 0 Then
  'do something meaningless here .e.g.
  Dim i = 1; '  << set your breakpoint here
End If

为了完整起见,这里是C ++版本:

if(theList->Count == 0){
  //do something meaningless here .e.g.
  int i = 1; //  << set your breakpoint here
}

答案 2 :(得分:0)

我可以为Visual Studio 2005提供部分答案。如果打开“断点”窗口(Alt + F9),您将获得断点列表。右键单击所需的断点,然后选择“条件”。然后放入你想要的状态。

答案 3 :(得分:0)

您已经建议了两个主要选项: 1.条件断点 2.检查错误值的代码,如果发生则检查断点

第一个选项是最简单和最好的选择,但在大型循环中它很快就会很慢!如果你循环100次千次迭代,唯一真正的选择是#2。在选项#1中,cpu在每次迭代时都会进入调试器,然后它会评估条件,如果break的条件为false,它只会继续执行程序。当它发生数千次时这很慢,如果你只循环1000次它实际上很慢(当然取决于硬件)

因为我怀疑你真的想要一个“全局”断点条件,如果满足某个条件(数组大小== 0)就应该破坏程序,遗憾的是,根据我的知识这不存在。我已经制作了一个调试函数来检查条件,如果它是真的它做了一些没有意义的事情,我有一个断点设置(即选项2),然后我经常调用该函数我怀疑原始失败。当系统中断时,您可以使用调用堆栈来识别错误的位置。