所以我有这个简单的代码片段:
CString str;
..................
if ( str.IsEmpty() )
str = spRelease->GetID();
我想在最后一行放置一个条件断点来测试str是否为空。 我先试了一下:
str == ""
但我明白了:
Error overloaded operator not found
然后这个:
str.isEmpty() == 0
得到这个:
Symbol isEMpty() not found
任何想法如何做到这一点?任何解决方法?
感谢。
答案 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
被初始化但未被使用的警告,因此很容易记住将其取回。这也允许您测试任何您想要的条件,包括调用函数或其他任何条件,而不必担心调试器的重构。这也避免了对某些调试器具有的条件断点数量的限制。
明显的缺点是您无法在调试会话期间添加一个,重新编译,记住将其取出等等。