gdb - «Попытка извлечь компонент значения, который не является структурным указателем» - PullRequest
0 голосов
/ 31 октября 2018

Я отлаживаю C ++, используя Kinetis Design Studio на Cortex-M4.

Есть вкладка Expressions, где вы можете ввести пользовательское выражение для просмотра значения переменной.

В моей среде расположение в ОЗУ выделенного объекта никогда не меняется, независимо от того, сколько раз я сбрасывал, перезагружал, запускал.

Итак, я знаю, что это должно быть возможно сделать:

((ClassA *) 0x12345678)->ClassA_member

но по какой-то причине он не работает.

След gdb, когда я пытаюсь ввести это выражение:

513,896 244-stack-info-depth --thread 1 50
513,905 244^done,depth="11"
513,905 (gdb) 
513,905 245-var-create --thread 1 --frame 0 - * "((CXCPHostProtocolProperties * )0x1fffc2c4)->_MaxDT\
O"
513,907 246-data-evaluate-expression --thread 1 --frame 0 "&(((CXCPHostProtocolProperties * )0x1fffc\
2c4)->_MaxDTO)"
513,907 245^error,msg="Type CXCPHostProtocolProperties *(CXCPHostProtocolProperties * const) is not \
a structure or union type."
513,907 (gdb) 
513,908 247-data-evaluate-expression --thread 1 --frame 0 "((CXCPHostProtocolProperties * )0x1fffc2c\
4)->_MaxDTO"
513,908 246^error,msg="Attempt to extract a component of a value that is not a structure pointer."
513,908 (gdb) 
513,910 247^error,msg="Attempt to extract a component of a value that is not a structure pointer."
513,910 (gdb) 

Что я делаю неправильно?
ClassA_member является публичным unsigned short

Также я использую -Os для оптимизации размера (в случае, если это имеет значение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...