Xcode调试器:显示长字符串

32

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

在调试器中,它仅显示这些字符串的值到一定长度,然后就用省略号代替了剩下的部分。我非常想看到完整的字符串值。

是否有一些选项可以配置,以便不会在任意长度处终止它们?


1
GUI真的没有办法显示非省略版本的字符串吗? - i_am_jorf
值得注意的是,调试器显示带有转义字符的字符串。当该字符串在控制台中打印时,转义字符不会被包含在内。 ""code"" 与 "code"。这个100个字符的限制非常烦人,因为它阻止你复制一个长的JSON字符串,然后立即将该字符串(包括转义字符)作为测试字符串变量粘贴到你的代码中。 - pkamb
3个回答

36

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

(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视图中,但至少现在我能看到我要找的了。 - Brian Moeskau
在调试器中查看字符串时,转义字符会被包含在内。这些字符不会通过 po 命令打印到控制台上。您知道保留字符串中转义字符的方法吗? - pkamb
2
对我来说,打印变量并没有压缩字符串“shortening”,所以我仍然看不到整个字符串。 - pojo
1
有关如何显示长字符串的解决方案,请参见:https://dev59.com/WV0Z5IYBdhLWcg3wfgUR - Dark

8

要显示非常长的字符串,可以使用来自在Xcode 6调试控制台中打印长字符串的方法

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

1

如果你在Xcode中编译C++项目,只需使用此命令

po string_name


1
遗憾的是,这也不能抑制字符串缩短,对于长字符串仍然会使用省略号进行截断。 - Dark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接