为什么我不能使用 LLDB 打印出带有 ¢ 字符的字符串文字?

Why can't I use the LLDB to print out a string literal with a ¢ character?

在 XCTest 期间的断点中(以及后来在正常 运行 期间),我遇到了一些......奇怪的事情。我认为下面的屏幕截图解释了我的问题:

为什么它声称 An Objective-C constant string's string initializer is not an array 它似乎试图将我的 @"" NSString 文字糖翻译成 NSString initializer-with-C-string 不成功,但为什么?

此外,我用 ¢ 字符或其 Unicode 转义序列测试了许多其他字符串,它们都有相同的结果。

一定是 LLDB 表达式解析器的错误。即使调试器也有错误..

您可以在 IRForTarget which is used by llvm ClangExpressionParser 中查找错误。

这看起来像是一个错误。请用 http://bugreporter.apple.com 归档。

静态字符串构造涉及一些编译器魔法,显然 lldb 在字符串包含高位字符时无法正确处理。您可以使用 NSString 构造函数之一在表达式解析器中实现相同的效果:

(lldb) expr NSString *$newstr = [NSString stringWithUTF8String: "Something¢"]
(lldb) expr $newstr
(__NSCFString *) $newstr = 0x00000001007000a0 @"Something¢"

然后你可以在以后的表达式中使用$newstr。