特定情况下的断点

时间:2011-04-02 23:50:08

标签: c++ debugging visual-c++ gdb g++

最近我编写了一个功能不正常的功能。我设法找出了什么是错的,并以迂回的方式修复它,但我想知道是否有更简单的方法。功能(剥离)是这样的:

int func(int param)
{
  if(param == 0) return SOMETHING;
  //...
  for(int i = 0;i < 4;i++) {
    // Point A
    func(param - 1);
  }
  //...
}

我想在A点设置一个断点,所以我可以看到param = 10(例如)和i = 0,1,2,3会发生什么,但问题是,该函数是递归的,因此它调用自身(在这种情况下)param = 9,8 ...我想知道是否有办法只为某个案例设置断点。在这种情况下,我使用了MS Visual C ++ Express 2008,但是如果有办法用另一个编译器(也许是g ++ / gdb),那么这也会有所帮助。

3 个答案:

答案 0 :(得分:4)

在Visual Studio中,您可以右键单击断点并以各种方式对其进行修改 在Condition...下,您可以指定您的条件,例如param == 10。您甚至可以使用简单的C库函数进行字符串比较strcmp(mystr,"hi") == 0

答案 1 :(得分:2)

Visual Studio调试器支持条件断点。在编辑器中放置断点后,右键单击它并选择&#34;条件...&#34;

答案 2 :(得分:0)

在Visual Studio中,您可以设置conditional breakpoints(不确定其他环境)。如果要在任何C ++环境中执行此操作,ASSERT始终是一个选项。

ASSERT(param != 10);