代码之家  ›  专栏  ›  技术社区  ›  glenatron

在Visual Studio中满足断点条件时,为什么不满足断点条件?

  •  1
  • glenatron  · 技术社区  · 16 年前

    我面前有一段代码,它遍历了一长串url,当这些url包含某种类型的文档时,出现了一些问题。我不想看到每个迭代,所以我设置了一个条件断点。

    问题是我不是一个C++程序员,所以我有点想方设法去做我想做的事情,我可能做了一些明显的错误。

    我现在的情况是:

    (strstr( url, "xlsx") == 0x00000000)
    

    这意味着每当url(它是一个UNICODE字符*)不包含文本“xlsx”strstr时,就会返回一个空指针,该指针应该与条件相匹配,正如我所理解的那样。从长远来看,我确实希望它是相反的,但由于只有几个“xlsx”网址,我想检查它是否工作,我现在有这种方式。

    嗯,我的条件没有得到满足,或者至少断点没有被触发。

    假设我做错了什么,我复制了与watch表达式相同的值,并在前面的行上设置了一个无条件断点。当我跨过传统断点时,结果如下:

    Name                                 | Value
    ================================================
    (strstr( url, "xlsx") == 0x00000000) | true
    

    很显然,就监视窗口而言,我的条件可以为true,但不能触发条件断点。

    为了做进一步的实验,我试着把情况翻过来

    (strstr( url, "xlsx") != 0x00000000)
    

    就条件断点而言,这也是错误的,这看起来有点滑稽,因为这意味着它既不等于也不等于空指针值。

    这是C++中NULL值的一些不寻常的特性吗?是不是真的有什么明显的东西让我错过了,或者是语言上的一些怪癖让我完全错过了这次的航行?

    1 回复  |  直到 16 年前
        1
  •  1
  •   user200783    16 年前

    如果你的url是unicode字符串,你试过使用wcsstr吗?