Я отлаживаю 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
для оптимизации размера (в случае, если это имеет значение).