繁体   English   中英

是否可以在Visual Studio 2013中设置多个条件断点?

[英]Is it possible to set a multiple conditions Breakpoint in Visual Studio 2013?

有谁知道它是否可以在Visual Studio 2013(C ++)中的特定行上设置多条件断点?

我正在尝试使用'&&',但它没有用。 我也无法在MSDN上找到答案。

我想设置的断点是在WindowProc中,我想设置的条件是 - message = WM_MOUSEMOVE,WPARAM = MK_LBUTTON

感谢先生,伊戈尔。

WM_MOUSEMOVE是一个宏定义,在编译期间由编译器在源代码中替换。 调试器是未知的,因此您不能在断点条件表达式中使用它; 使用显式数字常量。

顺便说一句,你知道你使用了运算符' = ',这与' == ' 一样......?

使用&&是允许的,应该可行。 更重要的是,允许使用许多常见的C ++表达式。 页面列出了什么是不允许的和什么是不允许的。

请注意,使用这种断点会大大降低应用程序的速度。 到调试不​​再可行的程度。 这可能是让你相信&&不被允许的原因。 要克服这个特殊问题,您可能需要使用如下构造:

//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所说的那样。

如果你正在使用这个语句,将它包装到预编译器宏中可能是最有用的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM