如何在VS2019中为C++字符串设置条件断点?
How to set a conditional breakpoint for C++ strings in VS2019?
我正在尝试为调试设置条件断点,但 VS 一直返回此错误:
如果为字符串定义运算符 != 怎么会这样?
变量错误为std::string
暂时在您的代码中添加类似这样的东西可能会做到这一点:
const auto s = string_i_want_to_test_to_see_if_its_empty.c_str ();
然后对于条件断点,表达式为:
s [0] != 0;
将该断点放在添加的断点之后的行上。希望在调试版本中,它不会被优化掉。如果是这样,我相信你会想办法绕过它。
您可以采取许多解决方法,例如,更好的编写条件的方法是:
!errors.empty()
您还有 size()
可以与 0 进行比较,c_str()
returns 一个 C 字符串,您可以将第一个元素与 [=13=]
进行比较,等等.
至于你的线路不起作用的原因很可能是条件调试器无法解析重载运算符。也许检查 non-implicitly 构建的 string
(即 error != string{}
)会更好,或者使用更新的 VS 版本,但实际上你可以看到这是多么浪费,而不是简单地检查empty()
函数结果。
我正在尝试为调试设置条件断点,但 VS 一直返回此错误:
如果为字符串定义运算符 != 怎么会这样?
变量错误为std::string
暂时在您的代码中添加类似这样的东西可能会做到这一点:
const auto s = string_i_want_to_test_to_see_if_its_empty.c_str ();
然后对于条件断点,表达式为:
s [0] != 0;
将该断点放在添加的断点之后的行上。希望在调试版本中,它不会被优化掉。如果是这样,我相信你会想办法绕过它。
您可以采取许多解决方法,例如,更好的编写条件的方法是:
!errors.empty()
您还有 size()
可以与 0 进行比较,c_str()
returns 一个 C 字符串,您可以将第一个元素与 [=13=]
进行比较,等等.
至于你的线路不起作用的原因很可能是条件调试器无法解析重载运算符。也许检查 non-implicitly 构建的 string
(即 error != string{}
)会更好,或者使用更新的 VS 版本,但实际上你可以看到这是多么浪费,而不是简单地检查empty()
函数结果。