有没有人知道是否可以在Visual Studio 2013(C ++)中的特定行上设置多条件断点?
我正在尝试使用'&&'但它没有奏效。我也无法在MSDN上找到答案。
我想设置的断点位于WindowProc中,我想设置的条件是 - message = WM_MOUSEMOVE,WPARAM = MK_LBUTTON
感谢先生,伊戈尔。答案 0 :(得分:2)
WM_MOUSEMOVE是一个宏定义,在编译期间由编译器在源代码中替换。调试器是未知的,因此您不能在断点条件表达式中使用它;改为使用显式数字常量。
顺便说一句,你知道你使用了运算符“=
”,不与“==
”相同......?
答案 1 :(得分:1)
允许使用&&
并且应该有效。而且,允许使用许多常见的C ++表达式。 This页面列出了不允许的内容和内容。
请注意,使用这种断点会大大降低应用程序的速度。到调试不再可行的程度。这可能会让您相信&&
是不允许的。要克服这个特殊问题,您可能需要使用这样的结构:
//untested code
#ifdef _DEBUG
if(condition a && condition b)
{
//either output something (option A)
std::cout << "condition a and b are true"
//or create a nop statement (option B)
__nop(); //and set a breakpoint
//or create a 'nop statement' with compiler warning (option C)
int breakpoint = 0;
}
#endif
这将产生更好的性能。
由于此代码仅在您在调试中进行编译时编译,因此您可以保留此位代码(因此选项B将是最佳的)。如果您想要提醒您删除调试子句,则选项C可能是您想要的方式。因为这会产生variable breakpoint is declared but never used
警告。正如borisbn所说的那样。
如果你使用这个语句很多,将它包装到预编译器宏中可能是最有用的。