StringWithFormat не работает в LLDB

Почему это не работает?

(lldb) po [NSString stringWithFormat:@"%f", 1.0]
error: too many arguments to method call, expected 1, have 2
error: 1 errors parsing expression

Но это делает:

(lldb) p (void)printf("%f", 1.0)
1.000000

Является ли Objective-C синтаксис переменных аргументов, не поддерживаемых в LLDB?

Ответ 1

Как указывал Мартин Р в комментариях, это, по-видимому, общая проблема LLDB с переменными списками аргументов.

С другой стороны, как Патрик Шмиттат отметил, -initWithFormat: работает просто отлично:

(lldb) po [[NSString alloc] initWithFormat:@"%f", 1.0]
1.000000

Я написал для этого радар: rdar://15261415 (stringWithFormat не работает в LLDB)

Ответ 2

Basically this is the bug in lldb, if you try the same in gdb it works. 
lldb is only passing the low 32 bits of the argument.

Пожалуйста, следуйте по этой ссылке Странное поведение с float stringWithFormat

Кроме того, я пробовал в GDB и его работу отлично, как показано на экранах: enter image description here

Теперь я попробовал самонадеянность в GDB: enter image description here