Я написал ядро для микроконтроллеров armv7-m (Cortex-Mx). Ядро способно динамически загружать файлы ELF. При отладке в GDB загружаются все символы ядра, и я могу без проблем пройти через исходный код C ++. При динамической загрузке символы приложения добавляются с помощью:
add-symbol-file app <base .text address> -s .data <base .data address> -s .bss <base .bss address>
Затем я могу установить точки останова, перейти в главное окно, используя представление сборки, и распечатать значение символов, таких как argc / argv. Все выглядит правильно.
За исключением просмотра исходного кода, он просто показывает [Нет доступных источников]. Я проверил, что приложение скомпилировано с помощью -O0 -ggdb. Пути в приложении ELF верны. Безуспешно возился с заданными каталогами GDB.
Каков механизм разрешения источника в GDB? Если символы загружены, полный ELF доступен с отладочной информацией, а источники остаются в том же месте, что и компиляция, что еще может быть не так?
gdb-multiarch GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
arm-none-eabi-gcc (Инструменты GNU для встроенных процессоров Arm 7-2018-q3-update) 7.3.1 20180622 (выпуск) [ARM / embedded-7-branch revision 261907]
Спасибо!