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

How to put a conditional breakpoint to test if a CString variable is empty

本文关键字:变量 是否 CString 测试 何放置 条件断点      更新时间:2023-10-16

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

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

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

str == ""

但是我得到了这个:

Error overloaded operator not found
然后

:

str.isEmpty() == 0

得到这个:

Symbol isEMpty() not found

你知道怎么做吗?有什么解决办法吗?

谢谢。

为什么不在最后一行放一个普通的断点呢?您已经知道str是空的。如果你想再次检查你的字符串是否为空,我会使用ASSERT来代替。

如果你真的要检查字符串,你必须检查CString中的m_pszData,所以你的条件是这样的:

str.m_pszData[0] == ''

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

我所见过的一种模式是添加这样的代码:

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

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

明显的缺点是不能在调试会话、重新编译、记住将它们取出等过程中添加它们。