我有一个Xcode项目,在调试时不会显示C ++ std :: strings。这令人非常沮丧,因为我不得不在LLDB控制台窗口中使用打印语句或一次输出一个字符,这很费时且难以阅读。
使用同一个项目的每个人都有同样的问题,其他项目没有看到这个问题,所以我认为这是某种项目设置。我正在调试,并没有打开优化,所以我已经消除了这个问题。我还比较了工作项目和具有此问题的项目设置,并且它们看起来都是相同的。
以下是我得到的输出示例,本例中的*_M_p
是正确的,字符串的第一个字符是问号:
如果我一次检查一个字符的字符串,那么这就是我在调试控制台中得到的结果:
我听说从LLVM切换回GDB可能会解决问题,但是GDB给了我调试某些数据类型的其他问题,所以在这种情况下我只会遇到新的问题。
答案 0 :(得分:4)
我的同事想出了解决方法:关闭方案设置中的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