如何设置条件断点来测试CString变量是否为空

时间:2011-08-08 08:27:32

标签: c++ visual-studio debugging breakpoints

所以我有这个简单的代码片段:

CString str;
..................
if ( str.IsEmpty() )
   str = spRelease->GetID();

我想在最后一行放置一个条件断点来测试str是否为空。 我先试了一下:

str == ""

但我明白了:

Error overloaded operator not found

然后这个:

str.isEmpty() == 0

得到这个:

Symbol isEMpty() not found

任何想法如何做到这一点?任何解决方法?

感谢。

3 个答案:

答案 0 :(得分:5)

为什么不在最后一行放一个普通的断点?你已经知道str是空的。如果你想仔细检查你的字符串是否为空,我会改用ASSERT。

如果你真的需要检查你的字符串,你必须检查你的CString中的m_pszData,所以你的情况如下:

str.m_pszData[0] == '\0'

答案 1 :(得分:1)

在Visual Studio 6中,您有操作IsEmpty(),请注意第一个'I'是大写的。您还有Compare()操作。您使用的是哪个版本的VS?

答案 2 :(得分:0)

我在这样的事情中看到的一种模式是添加一些像这样的代码:

if (some_condition) {
   int breakpoint=rand();
}

这会生成关于breakpoint被初始化但未被使用的警告,因此很容易记住将其取回。这也允许您测试任何您想要的条件,包括调用函数或其他任何条件,而不必担心调试器的重构。这也避免了对某些调试器具有的条件断点数量的限制。

明显的缺点是您无法在调试会话期间添加一个,重新编译,记住将其取出等等。