1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/rcore-os-rCore-Tutorial

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
gdb.md 5.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 21:14 7f8a4fd

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

Примечание: использование GDB позволяет удобно наблюдать за процессом работы rCore, но не является требованием учебного курса.

Для отладки rCore с помощью GDB необходимо, чтобы GDB поддерживал архитектуру riscv64.

  • Запустите команду gdb --configuration, чтобы узнать, какие архитектуры поддерживает локальный GDB, где параметр --target указывает на архитектуру, которую он может отлаживать.

Если GDB не поддерживает нужную архитектуру, можно выполнить следующие шаги для установки riscv64-unknown-elf-gdb:

Установка riscv64-unknown-elf-gdb

  1. Установите зависимости (для Linux и macOS могут возникнуть ошибки, которые нужно будет исправить):

    • Python не обязателен.
    • В системах типа Ubuntu 20.04 python и python-dev нужно заменить на python2 и python2-dev.
    sudo apt-get install libncurses5-dev python python-dev texinfo libreadline-dev
  2. Перейдите на сайт Зеркала Tsinghua и загрузите последнюю версию исходного кода GDB.

  3. Распакуйте исходный код и перейдите в каталог.

  4. Выполните следующую команду:

    • --prefix — путь установки, который по этой команде будет установлен в /usr/local/bin/
    • --with-python — адрес python2, он и --enable-tui нужны для поддержки последующей установки визуального плагина, что не обязательно.
    mkdir build
    cd build
    ../configure --prefix=/usr/local --with-python=/usr/bin/python --target=riscv64-unknown-elf --enable-tui=yes
  5. Скомпилируйте и установите:

    # Linux
    make -j$(nproc)
    # macOS
    make -j$(sysctl -n hw.ncpu)
    
    sudo make install
  6. (Необязательно) Установите плагин gdb-dashboard, чтобы улучшить опыт отладки.

    wget -P ~ https://git.io/.gdbinit

Отладка rCore с использованием GDB

В файле os/Makefile есть метод debug, который можно запустить с помощью команды make debug, чтобы открыть отладчик в tmux.

Вручную:

  • Добавьте параметры -s -S к параметрам запуска QEMU, чтобы он ждал подключения отладчика на порту 1234.
  • Запустите riscv64-unknown-elf-gdb.
  • В GDB выполните команду file target/riscv64imac-unknown-none-elf/debug/os, чтобы загрузить символы из ядра без использования strip.
  • В GDB выполните target remote localhost:1234, чтобы подключиться к QEMU и начать отладку.

Простые методы использования GDB

Управление потоком выполнения:

  • b <имя функции> устанавливает точку останова при входе в функцию, например, b rust_main или b os::memory::heap::init.
  • cont продолжает выполнение.
  • n выполняет следующую строку кода, не входя в функцию.
  • ni выполняет следующую инструкцию (если это инструкция перехода, то выполняется до возврата).
  • s выполняет следующую строку кода и входит в функцию.
  • si выполняет следующую инструкцию, включая инструкции перехода.

Просмотр состояния:

  • Если gdb-dashboard не установлен, используйте команду layout для отображения информации о регистрах и т. д., см. help layout.
  • Используйте x/<формат> <адрес> для просмотра памяти, например, x/8i 0x80200000 для просмотра 8 инструкций, начиная с адреса 0x80200000. См. help x для получения подробной информации о формате.

Примечание

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

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/rcore-os-rCore-Tutorial.git
git@api.gitlife.ru:oschina-mirror/rcore-os-rCore-Tutorial.git
oschina-mirror
rcore-os-rCore-Tutorial
rcore-os-rCore-Tutorial
master