Я написал ядро для микроконтроллеров 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-обновление) 7.3.1 20180622 (выпуск) [ARM / embedded-7-branch edition 261907]
Спасибо!