【问题标题】:Xcode debugger: display long stringsXcode 调试器:显示长字符串
【发布时间】:2010-10-06 13:51:29
【问题描述】:

在 Xcode 中调试程序时,我有几个 CFStringRef 变量指向长度在 200 个字符左右的字符串。

在调试器中,它只显示这些字符串的值直到一定长度,然后将它们省略掉。我真的很想看看字符串的全部价值。

我可以配置一些选项,使其不会以任意长度终止它们吗?

【问题讨论】:

  • 真的没有办法让GUI显示字符串的非省略版本吗?
  • 值得注意的是,调试器显示字符串 with 转义字符。在控制台中打印字符串时,不包括转义字符。 “\”代码\“”与“代码”。这 100 个字符的限制非常烦人,因为它会阻止您复制长 JSON 字符串,然后立即将该字符串(包括转义字符)粘贴为代码中的测试字符串变量。

标签: string xcode macos debugging


【解决方案1】:

在调试控制台中,您可以通过执行以下操作来获取字符串值:

(gdb) print (void)CFShow(myCFString)

或:

(gdb) po (NSString*)myCFString

其中任何一个都会将整个字符串的内容显示到调试控制台。这可能是处理大型可变长度字符串或任何类型的数据结构的最简单方法。

要了解更多信息,调试器中的print 命令基本上会将一些数据结构转储到控制台。您也可以调用任何函数或其他任何东西,但由于 print 无法访问函数声明,因此您必须确保隐式提供它们(如上例所示),否则 print 命令会报错。

poprint-object 的快捷方式,除了Objective-C 对象外与print 相同。它的功能基本上是这样的:

(gdb) print (const char *)[[theObject debugDescription] UTF8String]

这对于检查NSData 对象和NSArray/NSDictionary 对象等内容非常有用。

有关调试主题的更多信息,请参阅Technical Note TN2124 - Mac OS X Debugging Magic 并且(从调试器控制台)您也可以发出help 命令。

【讨论】:

  • 谢谢。有点蹩脚,这不是内置在 XCode 视图中,但至少我可以看到我现在正在查看的内容。
  • 在调试器中查看字符串,包含转义字符。这些不会使用po 打印到控制台。你知道有什么方法可以在字符串中保留转义字符吗?
  • 对我来说,打印变体没有抑制字符串“shortening”,所以我仍然看不到整个字符串。
  • 显示长字符串的解决方案见:stackoverflow.com/questions/31402092/…
【解决方案2】:

如果您在 xcode 中编译 c++ 项目,只需使用此命令

po 字符串名称

【讨论】:

  • 遗憾的是,这也不会抑制字符串缩短,它仍然会用省略号截断长字符串
【解决方案3】:

print long string in xcode 6 debugging console显示真长字符串的使用方法

  1. 在 lldb 控制台增加 max-string-summary-length
setting set target.max-string-summary-length 10000
  1. 使用printpo 命令打印您的字符串
print my_string

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2015-10-02
    • 1970-01-01
    • 2011-12-07
    • 2018-03-11
    • 2013-10-20
    相关资源
    最近更新 更多