Почему я не могу использовать LLDB для печати строкового литерала с символом ¢?
Находясь в точке останова во время XCTest (и позже во время обычного запуска), я столкнулся с чем-то... странным. Я думаю, что скриншот ниже объясняет мою проблему:
NSString
буквальный сахар в NSString
Initializer-with-C-string не удалось, но почему?
Кроме того, я протестировал много других строк с ¢
символ или его escape-последовательность Unicode, и все они имеют одинаковый результат.
2 ответа
Это похоже на ошибку. Пожалуйста, отправьте его на http://bugreporter.apple.com/.
Построение статической строки включает в себя некоторую магию компилятора, и, очевидно, lldb не понимает этого правильно, когда строка содержит старшие символы. Вы можете достичь того же эффекта в анализаторе выражений, используя один из конструкторов NSString:
(lldb) expr NSString *$newstr = [NSString stringWithUTF8String: "Something¢"]
(lldb) expr $newstr
(__NSCFString *) $newstr = 0x00000001007000a0 @"Something¢"
Затем вы можете использовать $newstr в будущих выражениях.
Должно быть ошибка в парсере выражений LLDB. Даже отладчики имеют ошибки..
Вы можете найти ошибку в IRForTarget, которая используется llvm ClangExpressionParser.