我有一个Xcode项目,在调试时不会显示C++ std::strings。这真令人沮丧,因为我不得不诉诸于打印语句或在LLDB控制台窗口中一次输出每个字符,这既耗时又难以阅读。

使用该同一项目的每个其他人都遇到相同的问题,而其他项目都没有看到此问题,因此我认为这是某种项目设置。我正在调试中,并且没有打开任何优化功能,因此已将其排除在外。我还比较了正在工作的项目和存在此问题的项目之间的项目设置,它们在每种方式上看起来都是相同的。

这是我得到的输出示例,此示例中的*_M_p是正确的,字符串的第一个字符是问号:

如果我一次检查一个字符的字符串,这就是在调试控制台中得到的结果:

我听说从LLVM切换回GDB可能会解决此问题,但是GDB在调试某些数据类型时给了我其他问题,因此在这种情况下我只会遇到新问题。

最佳答案

我的同事找到了解决方法:关闭方案设置中的Guard Malloc选项。

  • 单击出现问题的方案
  • 单击编辑方案
  • 单击诊断
  • 取消选中“启用Guard Malloc”选项。

  • 现在应该显示std::strings。我们不知道为什么会这样,这可能是Xcode中的错误,但是我认为它会在不久前被发现。此外,这已在多个项目上进行了测试,启用Guard Malloc始终会导致std::strings在调试器中无法正确显示。

    07-28 02:53
    查看更多