Отладка прикладного приложения

30 сентября 2026

ID 321297

Если ядро KasperskyOS ожидает подключения отладчика перед запуском и требуется отладить процесс, запускаемый из KPA-пакета, можно выполнить отладку со старта.

Также см. обучающий сценарий "Отладка примера в Neovim".

Чтобы отладить прикладное приложение, выполните следующие действия:

  1. Добавьте в проект файл конфигурации .vimspector.json для отладки в GDB со следующим содержанием:

    .vimspector.json

    {

    "adapters": {

    "kos-gdb": {

    "name": "kos-gdb",

    "command": [

    "/opt/KasperskyOS-Community-Edition-Qemu-<version>/toolchain/bin/debug_adapter",

    "--gdb-path",

    "/opt/KasperskyOS-Community-Edition-Qemu-<version>/toolchain/bin/aarch64-kos-gdb",

    "--transport",

    "stdio"

    ]

    }

    },

    "configurations": {

    "KOS attach (Hello)": {

    "default": true,

    "adapter": "kos-gdb",

    "filetypes": [ "c", "cpp" ],

    "configuration": {

    "request": "attach",

    "name": "Attach and debug",

    "gdbServer": "tcp::12345",

    "useExtendedRemote": true,

    "setupCommands": [

    {

    "description": "Load gdb_init",

    "text": "source <path to project>/gdb_init",

    "ignoreFailures": false

    }

    ],

    "setupServerCommands": [

    {

    "description": "Load setup script",

    "text": "source <path to project>/setup",

    "ignoreFailures": false

    }

    ]

    }

    }

    }

    }

    При использовании примера выше замените параметры <version> и <path to project> на версию SDK и путь к корневой директории примера соответственно.

    Описания использованных в файле .vimspector.json параметров см. в разделе Справочная информация об адаптере.

  2. Добавьте в проект файл gdb_init:

    gdb_init

    shell rm -rf <path to project>/build/einit/sysroot-symbols/

    shell mkdir <path to project>/build/einit/sysroot-symbols/

    shell find -L <path to project>/build -type f -executable | xargs -I {} cp {} <path to project>/build/einit/sysroot-symbols/

    shell find -L <path to project>/build -type f -executable | xargs -I {} /opt/KasperskyOS-Community-Edition-Qemu-<version>/toolchain/bin/cmake -DBINARY={} -DBUILD_ID_DIR=<path to project>/build/sysroot-symbols/ -P /opt/KasperskyOS-Community-Edition-Qemu-<version>/toolchain/share/cmake/Modules/platform/building/build-id.cmake 2> /dev/null

    Замените параметры <version> и <path to project> на версию SDK и путь к корневой директории примера соответственно.

    Команды в файле gdb_init подготавливают директорию, содержащую символы для отладки.

  3. Добавьте в проект файл setup с командами для настройки GDB-сервера:

    setup

    set sysroot <path to project>/kasperskyos_ping/build/einit/sysroot-symbols

    set solib-search-path /opt/KasperskyOS-Community-Edition-Qemu-<version>/sysroot-aarch64-kos

    set osabi auto

    set scheduler-locking off

    set schedule-multiple on

    set follow-fork-mode parent

    set follow-exec-mode same

    set detach-on-fork off

    monitor exec kl.ExecMgrEntity

    catch exec

    continue

    detach inferiors 1

    remove-inferiors 1

    monitor exec <process name>

    catch exec

    continue

    b main

    continue

    Замените параметры:

    • <version> и <path to project> на версию SDK и путь к корневой директории примера соответственно.
    • <process name> на имя отлаживаемого процесса. Чтобы узнать имя процесса, можно запустить решение один раз и посмотреть в журнале его имя в поле name. Например, для процесса Hello в журнале будет запись name: Hello.1. Также можно узнать имя процесса с помощью gdb-команды i os processes после запуска отлаживаемого процесса.
  4. Находясь в корневой директории примера, соберите его образ для дальнейшей отладки:

    cmake -B build -D CMAKE_TOOLCHAIN_FILE="$KOSCEDIR/toolchain/share/toolchain-aarch64-kos.cmake" -D CMAKE_BUILD_TYPE=Debug && cmake --build build --target gdbsim

    В результате сборки в терминале выведется следующее сообщение:

    [KDBG] Waiting for GDB connection infinitely

  5. В отдельном терминале откройте файл исходного кода программы в Neovim.
  6. Запустите vimspector, нажав на клавишу отладки (обычно F5) или выполнив команду :call vimspector#Launch().

    В результате в окне терминала появится текст "Initializing debug session KOS attach (Hello) (0)..". и начнется отладка.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!