Хобрук: Ваш путь к мастерству в программировании

Инструмент отладки файлов .ASM

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

Написал простой загрузчик в сборке. Однако он работает не совсем так, как мне хотелось бы, хотя я считаю, что логика верна. Итак, я пытаюсь использовать отладчик, чтобы я мог пройти через загрузчик, проверить статус регистра и т. Д.

Я попробовал GDB на Ubuntu, скомпилировав свой .asm в .elf и .o (нужно ли мне это делать? Если да, каков следующий шаг?) Кроме того, я читал, что в симуляторе Bochs есть внутренний отладчик, но я не могу найти ни одного документа, как его использовать. У меня также есть Visual Studio 2010, windbg, но я не знаю, как использовать его для отладки файлов .asm.

Если бы вы делали это раньше, это был бы простой ответ. Любая помощь могла бы быть полезна.

Искренне



Ответы:


1

Если вы хотите отлаживать код загрузчика, вам, очевидно, нужно запустить его в той же среде, в которой будет выполняться сам код. Как я уверен, вы уже знаете, код загрузчика выполняется в реальном режиме после того, как BIOS завершает выполнение ПОЧТА. Затем загрузчик загружается в память по адресу 7c00h, и выполняется переход по этому адресу.

Очевидно, что такая среда не может быть надежно эмулирована после того, как ваш компьютер запущен и «настоящая» операционная система уже загружена, поскольку к этому времени ваш ЦП находится в защищенном режиме (или в длительном режиме, если это AMD64). Единственный вариант на данный момент - использовать QEMU или Bochs для имитации реального ПК внутри вашей операционной системы. Я использовал Bochs для отладки некоторого кода загрузчика, который написал в прошлом, и он работал довольно хорошо. Просмотрите страницы руководства для получения более подробных инструкций.

06.02.2012
  • Спасибо, Даниэль. Странно, что я не смог заставить внутренний отладчик Bochs работать должным образом. Я пытался настроить в командной строке, но у меня это не совсем сработало. (Даже для командной строки он просто запускает эмулятор графического интерфейса ...) Думаю, я дам еще один шанс прочитать руководство ... 07.02.2012
  • Раньше я прикреплял его к GDB, и эта техника работала нормально. Я уверен, что это где-то инструкция. 07.02.2012
  • Новые материалы

    От AlphaGo до самоуправляемых автомобилей: понимание основ обучения с подкреплением
    Руководство для начинающих по RL! Готовы ли вы исследовать передовые технологии искусственного интеллекта? Откройте для себя захватывающий мир обучения с подкреплением ! От ошеломляющей победы..

    Как сделать все элементы равными из списка в минимальных операциях в Python, используя math.ceil()
    Сегодня мы узнаем, как найти минимальные операции, необходимые для того, чтобы сделать все элементы из списка равными, используя Python в качестве языка программирования. Я использую PyCharm в..

    Создание пользовательских событий в React Native
    Обновление: это решение больше не работает, поскольку React Native не включает стандартную библиотеку Node. Однако есть автономные модули, в которых реализован API EventEmitter. Рассмотрите..

    За кулисами метода JavaScript Array.filter()
    Array.filter() — это встроенный в JavaScript метод, который создает новый массив со всеми элементами исходного массива, прошедшими определенный тест. Метод не изменяет исходный массив...

    Прогресс с моделью скрытой диффузии, часть 3 (машинное обучение)
    Выровняйте свои латентные данные: синтез видео высокого разрешения с моделями скрытой диффузии (arXiv) Автор: Андреас Блаттманн , Робин Ромбах , Хуан Линг , Тим Докхорн , Сын Ук Ким ,..

    Totaljs Flow: триггерные компоненты
    Total.js — это мощная и универсальная среда веб-приложений, которая предоставляет разработчикам ряд инструментов для оптимизации процесса разработки. Total.js Flow — самый популярный..

    Сквозное машинное обучение BigQuery
    Используйте Google Cloud BigQuery для участия в конкурсе Kaggle Я покажу вам, как прогнозировать выживших после катастрофы Титаника, используя только BigQuery и API Kaggle . С тех пор, как я..