代码之家  ›  专栏  ›  技术社区  ›  Olumide

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

  •  2
  • Olumide  · 技术社区  · 15 年前

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

    然而,经常会将列表大小设置为零“中间流”。我想将调试器设置为在列表大小变为零时断开,但我不知道如何断开,并且希望有任何关于如何执行此操作的指针。

    谢谢。

    4 回复  |  直到 15 年前
        2
  •  3
  •   o.k.w    15 年前

    在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
    }
    
        3
  •  0
  •   JXG Jasmynn Flores    15 年前

    我可以给出Visual Studio 2005的部分答案。如果打开“断点”窗口(alt+f9),就会得到一个断点列表。右键单击所需的断点,然后选择“条件”,然后放入所需的条件。

        4
  •  0
  •   sindre j    15 年前

    您已经提出了两个主要选项: 1。条件断点 2。用于检查错误值的代码,如果发生,则使用断点

    第一个选项是最简单和最好的,但是在大循环上,很不幸,它非常慢!如果循环100个千次迭代,唯一真正的选择是2。在选项1中,CPU在每次迭代时进入调试程序,然后评估条件,如果中断条件为假,则继续执行程序。当它发生数千次时速度很慢,如果循环仅1000次,实际上速度很慢(当然取决于硬件)。

    正如我怀疑的那样,您确实需要一个“全局”断点条件,如果满足某个条件(数组大小=0),那么该条件将中断程序,不幸的是,据我所知,这并不存在。我做了一个检查条件的调试函数,如果它是真的,它做了一些无意义的事情,我将断点设置为(即选项2),然后在怀疑原始函数失败的地方频繁调用该函数。当系统中断时,您可以使用调用堆栈来识别故障位置。