KasperskyOS Community Edition 1.3

Отладка программ в решении на базе KasperskyOS

Использование отладчика GDB

Чтобы выполнить отладку программ в решении на базе KasperskyOS, нужно использовать отладчик GDB из состава KasperskyOS Community Edition на компьютере под управлением ОС Ubuntu. Отладку можно выполнить как на QEMU из состава KasperskyOS Community Edition, так и на аппаратной платформе. Для отладки на QEMU нужно использовать GDB-сервер QEMU или GDB-сервер ядра KasperskyOS. Для отладки на аппаратной платформе требуется использовать GDB-сервер ядра KasperskyOS.

Работоспособность отладчика GDB и QEMU не из состава KasperskyOS Community Edition не гарантируется.

Отладчик GDB по умолчанию поддерживает OS ABI (англ. Operating System ABI), специфичный для KasperskyOS. При изменении профиля OS ABI, заданного по умолчанию, возможность полноценной отладки не гарантируется.

Можно выполнять отладку одновременно нескольких программ решения, загрузив отладочные символы для нескольких исполняемых файлов.

Отладочные символы исполняемых файлов могут сохраняться в самих исполняемых файлах либо в отдельных файлах. Во втором случае можно существенно уменьшить размер образа решения. Чтобы сохранить отладочные символы в файлах *.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:<имя программы>>)

Обратная трассировка стека при аварийном завершении процесса

Если процесс завершается аварийно, то ядро KasperskyOS выводит данные обратной трассировки стека (сведения о стеке вызовов) для потока исполнения, в котором возникло необработанное исключение. Эти данные позволяют определить последовательность вызовов функций, которая привела к аварийному завершению процесса.

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

Поддержка санитайзеров

В KasperskyOS Community Edition поддерживаются санитайзеры ASAN и UBSAN.

В этом разделе справки

Отладка программ с использованием GDB-сервера QEMU

Отладка программ с использованием GDB-сервера ядра KasperskyOS

Анализ данных обратной трассировки стека при аварийном завершении процесса