是否可以在 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

提前致谢,伊戈尔。

允许使用 &&,应该可以。此外,还允许使用许多常见的 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 所建议的那样。

如果您经常使用此语句,将其包装到预编译器宏中可能最有用。

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

顺便说一句,您是否知道您使用了运算符“=”,它与“==相同...?