Xcode项目不再在调试器中显示std :: string

时间:2013-08-22 18:57:20

标签: c++ xcode debugging

我有一个Xcode项目,在调试时不会显示C ++ std :: strings。这令人非常沮丧,因为我不得不在LLDB控制台窗口中使用打印语句或一次输出一个字符,这很费时且难以阅读。

使用同一个项目的每个人都有同样的问题,其他项目没有看到这个问题,所以我认为这是某种项目设置。我正在调试,并没有打开优化,所以我已经消除了这个问题。我还比较了工作项目和具有此问题的项目设置,并且它们看起来都是相同的。

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

enter image description here

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

enter image description here

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

4 个答案:

答案 0 :(得分:4)

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

  • 点击显示问题的方案
  • 点击编辑方案
  • 点击“诊断”
  • 取消选中“启用Guard Malloc”选项。

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

答案 1 :(得分:0)

试试这个lldb命令

exp -f s -- myString

您告诉lldb以c String

格式显示字符串的表达式

答案 2 :(得分:0)

这可能不会导致原始海报的问题,但它引起了我的问题:我使用的是Xcode 6.4,而大部分代码都是用6.2构建的。切换到6.2使得值在调试器中可见。

答案 3 :(得分:0)

尝试此命令

po string_name