最近我编写了一个功能不正常的功能。我设法找出了什么是错的,并以迂回的方式修复它,但我想知道是否有更简单的方法。功能(剥离)是这样的:
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),那么这也会有所帮助。
答案 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);