Начальные шаги отладки на аппаратной платформе
Чтобы начать отладку с использованием GDB-сервера ядра KasperskyOS на аппаратной платформе, нужно выполнить следующие шаги:
- Собрать отладочные версии исполняемых файлов и библиотек и создать образ решения для аппаратной платформы.
Для этого нужно вызвать shell-команды
cmake, указав параметры-D CMAKE_BUILD_TYPE=Debugи--target sd-image.Пример:
$ cmake -B build \
-D CMAKE_TOOLCHAIN_FILE="$KOSCEDIR/toolchain/share/toolchain-*-kos.cmake" \
-D CMAKE_BUILD_TYPE=Debug \
&& cmake --build build --target sd-image
Отладочные символы могут сохраняться как в ELF-файлах, так и в отдельных файлах. Во втором случае можно существенно уменьшить размер образа решения. Чтобы сохранить отладочные символы в файлах
*.dbg, нужно использовать следующуюCMake-команду:add_custom_command(TARGET <имя цели сборки> POST_BUILD
COMMAND ${CMAKE_OBJCOPY} --only-keep-debug $<TARGET_FILE:<имя цели сборки>> $<TARGET_FILE_NAME:<имя цели сборки>>.dbg
COMMAND ${CMAKE_OBJCOPY} --strip-debug $<TARGET_FILE:<имя цели сборки>>
COMMAND ${CMAKE_OBJCOPY} --add-gnu-debuglink=$<TARGET_FILE_NAME:<имя цели сборки>>.dbg $<TARGET_FILE:<имя цели сборки>>)
- Загрузить образ решения на аппаратную платформу и запустить решение.
Программы решения не начинают исполняться, пока GDB-сервер ядра ожидает подключения отладчика GDB.
- Запустить отладчик GDB и подключиться к GDB-серверу ядра.
Для этого нужно запустить исполняемый файл
toolchain/bin/*-kos-gdbиз состава KasperskyOS Community Edition SDK. Запуск нужно выполнить в директории, где сохранен файл.gdbinit, созданный при подготовке к отладке. - Создать инфериоры, привязать их к процессами и загрузить отладочные символы.
Чтобы загрузить отладочные символы, нужно переключиться на инфериор, ассоциированный с процессом, и использовать следующие GDB-команды:
add-symbol-file<путь к файлу> – для исполняемых файлов со статической или динамической компоновкой;file<путь к файлу> – для исполняемых файлов с динамической компоновкой.
GDB-команду
fileнужно использовать, чтобы отладчик GDB загрузил отладочные символы исполняемого файла и динамических библиотек, от которых зависит этот исполняемый файл. Чтобы отладчик GDB загрузил отладочные символы только исполняемого файла с динамической компоновкой, нужно использовать GDB-командуadd-symbol-file.Если отладочные символы сохраняются не в исполняемых файлах, а в отдельных файлах, то в исполняемые файлы добавляются ссылки на файлы с отладочными символами. При вызове GDB-команды
add-symbol-fileилиfileможно указывать как исполняемый файл, так и файл с отладочными символами.
При повторной сборке (шаг 1) нужно завершить сессию отладки (выйти из отладчика GDB) и выполнить повторно шаги 2-4.