Отладка нескольких символов с помощью GDB с использованием кода Visual Studio - PullRequest
2 голосов
/ 16 мая 2019

Я работаю над проектом STM32, в котором есть загрузчик. Микроконтроллер загружается с загрузчиком, а затем переходит в приложение. Для корректной отладки приложения после операции перехода я использую команду GDB ниже:

add-symbol-file application.elf 0x080603B0

С помощью приведенной выше команды я могу без проблем получить все символы отладки для приложения. Я могу отлаживать все, что захочу.

В последнее время я добавил исходный файл с именем foo.c в оба проекта. В этом файле есть переменная с именем bar. Проекты успешно компилируются и связываются без проблем. До сих пор все хорошо. Когда я отлаживаю bar в коде загрузчика, я вижу его значение правильно, но после того, как я перехожу к приложению и пытаюсь отладить bar в приложении, окно просмотра показывает мне неправильное значение (потому что адрес строки в сторона приложения другая).

Я сбросил свои два исполняемых файла (bootloader.elf и application.elf) и убедился, что адрес bar в каждом исполняемом файле отличается, что является нормальным. Я отметил абсолютный адрес bar в каждом исполняемом файле и отладил эти абсолютные адреса. Violà ... У меня есть правильные значения для каждой bar переменной.

Я использую функцию отладки кода Visual Studio, которая использует GDB и openocd позади. Моя конфигурация отладки кажется правильной, поскольку я могу отлаживать все, если нет дублированных символов.

Я подозреваю, что мне трудно отлаживать несколько символов.

Как я могу отлаживать свои проекты, когда у меня есть несколько символов? В чем проблема в моей ситуации и как я могу решить эту проблему?

...