特定情况下的断点
问题描述:
最近我编写了一个不能正常工作的函数。我设法弄清楚什么是错误的,并以迂回的方式修复它,但我想知道是否有更简单的方法。该功能(精简)是这样的:特定情况下的断点
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或许)来做,那也是有帮助的。
答
在Visual Studio中,可以右键单击断点并以各种方式对其进行修改。
根据Condition...
您可以指定您的条件,如param == 10
。您甚至可以使用简单的C库函数进行字符串比较strcmp(mystr,"hi") == 0
!
答
Visual Studio调试器支持条件断点。在编辑器中放置断点后,右键单击它并选择“条件...”
答
在Visual Studio中,您可以设置conditional breakpoints(不确定其他环境)。如果你想在任何C++环境下做到这一点,ASSERT
总是一个选项。
ASSERT(param != 10);
最简单的办法:'如果(PARAM == 10)的DebugBreak();'' – Erik 2011-04-02 23:56:41