为什么我不能使用 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。
在 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。