C struct - lldb выражение не выполняется - PullRequest
0 голосов
/ 27 августа 2018

Почему lldb's expression не может понять мою структуру C, если я не объявил переменную по умолчанию?

struct YD_MENU {
    char menu_name[10];
    int menu_option;
};

int main() {

    return 0;
}

Добавление точки останова внутри основного ...

(lldb) exp struct YD_MENU $b
error: variable has incomplete type 'struct YD_MENU'
forward declaration of 'YD_MENU'

Если я поменяю его на следующее ...

struct YD_MENU {
    char menu_name[10];
    int menu_option;
} default_menu;

(lldb) exp struct YD_MENU $a отлично работает.

Я думаю, что это связано с Почему LLDB не может оценить это выражение? , но предложенные ответы не работают.

(lldb) version
lldb-1000.0.29

1 Ответ

0 голосов
/ 27 августа 2018

clang (и gcc также) довольно агрессивны в отношении того, чтобы не выдавать информацию о типах для «неиспользуемых типов». Когда вы делаете что-то вроде import <Cocoa/Cocoa.h>, существует так много типов, что это необходимо для поддержания разумного размера отладочной информации. Вот почему, когда вы определяете структуру, но не используете ее, lldb не может видеть тип. На самом деле информация о типе недоступна для просмотра lldb.

...