Странное поведение в LLDB при печати элемента структуры двойного типа - PullRequest
1 голос
/ 28 марта 2012

В некотором коде iOS у меня есть объект C struct ivar.Один из членов этой структуры имеет тип double.Если я в методе присваиваю этому struct элементу, отладчик выдает ложные значения для этого элемента struct, когда я печатаю сам struct (как это делает список переменных), но когда яНапечатайте struct член напрямую, (p structWithDouble.doubleMember), я получаю правильное значение.Кроме того, если я присваиваю значение этого члена локальному автоматическому double var, я вижу правильное значение в представлении списка и при печати. ​​

Я полагаю, что это проблема с LLDB, но этотревожит и расстраивает.Это известная проблема?Если да, есть ли обходной путь?

Примеры

typedef struct {
    double doubleMember;
} structWithDouble;

@interface MyClass : NSObject {
    structWithDouble structAsIvar;
}
@end

@implementation

- (void)someMethod {
    structAsIvar.doubleMember = 200.0;
    double localDouble = structAsIvar.doubleMember;
}

Внутри someMethod:, список переменных отладчика показывает следующие значения:

structAsIvar.doubleMember (double) 1.65865e-307
localDouble               (double) 200

Over в LLDB, Я получаю следующий вывод при взломе someMethod::

(lldb) p structAsIvar.doubleMember
(double) $4 = 200

(lldb) p structAsIvar
(structAsIvar) $5 = {
  (double) doublemember = 1.17244e-312
}

(lldb) p localDouble
(double) 200

(lldb) p self->structAsIvar.doubleMember
(double) 200

Обновление

Я обнаружил, что нет этого поведения происходит при использовании GDB.Очевидно, LLDB просто еще не готов ... Но я все еще заинтересован в обходе LLDB.

1 Ответ

0 голосов
/ 30 сентября 2012

Похоже, это исправлено в lldb (lldb-167.2) Xcode 4.5:

(lldb)  p structAsIvar.doubleMember
(double) $5 = 200
(lldb)  p structAsIvar
(structWithDouble) $6 = {
  (double) doubleMember = 200
}
(lldb) p localDouble
(double) $7 = 200
(lldb) p self->structAsIvar.doubleMember
(double) $8 = 200
(lldb) 

Я не уверен, в каком именно выпуске было исправление;скорее всего, Xcode 4.4 также работает правильно, но у меня нет этого для тестирования прямо сейчас.

...