Окно стека вызовов не отображает локальные значения

Я запускаю сеанс отладки.

Я устанавливаю точку останова внутри функции services_init на линии 201.

Я управлял run up to break point команда

Процессор делает паузу в строке 201, как и ожидалось. Однако в окне стека отображаются только переменные, локальные для main функция.

Почему я не вижу локальные переменные services_init?

1 ответ

Разработчик из Nordic решил мою проблему

Привет,

Попробуйте зайти в настройки проекта -> вкладка C/C++ и установить уровень оптимизации -O0. Затем заново скомпилируйте и прошейте прошивку снова. При включении более высокой оптимизации компилятор ищет шаблоны во всем вашем коде, объединяет похожие разделы вместе, и результат не такой упорядоченный, как ваш исходный код. По этой причине отладка с высокой оптимизацией может привести к непоследовательным "скачкам" в коде, а стек вызовов может не отображать все переменные правильно.

Ура, Хакон

Другие вопросы по тегам