2014-10-29 3 views
0

При переходе через отладку в REDHAWK IDE маркер строки иногда не соответствует надлежащему потоку программы, и не все переменные, похоже, не обновляются соответствующим образом.Отладка в REDHAWK IDE

Я бегу на доске с несколькими компонентами. Я начинаю отладку, открывая файл .spd.xml компонента и нажав на гиперссылку «отлаживать как» на вкладке обзора. Это добавляет компонент на классную доску вместе с другими. Отладчик попадает в точку останова после запуска всех компонентов.

Испытывал ли кто-либо из этих симптомов (данные не обновляются или неправильно программируются)? Если да, то в чем причина и как я могу это преодолеть?

Спасибо,

--Mike

ответ

1

Вполне вероятно, что вы отладка ++ исполняемого файла C. Когда исходный код был скомпилирован, компилятор выполнил определенные оптимизации, которые могли привести к тому, что машинный код вышел из строя по сравнению с исходным кодом. Эти оптимизации также могут удалять переменные из области видимости. Уровень оптимизации является параметром во время компиляции. Уровень по умолчанию, используемый в REDHAWK, равен -O2. Для получения дополнительной информации см. Справочную страницу GCC (http://linux.die.net/man/1/gcc).

Если у вас есть исходный код этого компонента, попробуйте следующее:

make clean; # Remove the binaries previously compiled if any. 
./reconf; 
./configure; 

# Stop here and check the config.log file and search for CXXFLAGS, at the bottom of the log file you'll notice that they are by default set to '-g -O2'. 

make V=1 #The V=1 will set the verbose flag and you'll see the calls to g++/gcc. Notice that the CXXFLAGS are in the g++ calls. 


To override the CXXFLAGS you may call configure like so: 
./configure 'CXXFLAGS=-O0 -g' 

Теперь, когда вы повторно сделать V = 1 вы увидите, что уровень оптимизации был уменьшен с 2 до нуля. Это, скорее всего, решит вашу проблему отладки, но создаст менее оптимизированный двоичный файл.

Смежные вопросы