6

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

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

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

在此处输入图像描述

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

在此处输入图像描述

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

4

4 回答 4

4

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

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

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

于 2013-08-23T00:13:00.503 回答
0

试试这个 lldb 命令

exp -f s -- myString

您正在告诉 lldb 以 c String 格式显示您的字符串的表达式

于 2014-03-06T11:35:50.113 回答
0

这可能不会导致原始发布者的问题,但它导致了我的问题:我使用的是 Xcode 6.4,而大多数代码都是使用 6.2 构建的。切换到 6.2 使值在调试器中可见。

于 2015-09-15T18:39:06.823 回答
0

试试这个命令

po 字符串名称

于 2017-07-18T04:52:41.367 回答