Кто отлаживал в Bochs, подскажите...

Тема в разделе "WASM.BEGINNERS", создана пользователем Protorus, 13 июл 2010.

  1. Protorus

    Protorus New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2009
    Сообщения:
    51
    Задача отладить свою прогу в bochs. Нужно как то остановиться на начале пргоги.
    В bochs есть возможность установить bp на память. Но заранее не извеснстно куда загрузиться моя прога.
    В инете находил примеры отладки, но они для отладки boot-секторов, а там адресс известен заранее, 0x7C00.

    Предлагают, в начало своей проги вписать код, который копирует тело проги в какой-либо известный регион памяти, ставить на его bp и передавать на него управление. А вдруг затру чего нужное, если Дос уже загружен?

    А можно как нибуть в bochs отловить прерывание, например int 3, забитое в начале проги?
    Пробовал записать вектор этого прерывания (3 * 4 = 0x000C) каким нибудь значением, и ставить на этот адрес bp, например так:

    Код (Text):
    1. xor AX, AX
    2. mov DS, AX
    3. mov word [0x000C], 0x1234
    4. mov word [0x000E], 0x5678
    но чегото не работает?
     
  2. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    А почему бы не посмотреть адрес в IDT (info idt 3 в Bochs) и не поставить на начало обработчика точку останова?
     
  3. Protorus

    Protorus New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2009
    Сообщения:
    51
    Да, это хорошая идея .. Но я туплю, не знаю как прервать выполнение и попасть в отладчик, что бы посмотреть вектор для int 3? Ctrl+C не помогает
     
  4. Protorus

    Protorus New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2009
    Сообщения:
    51
    Вариант с перезаписью вектора для int 3 работает, я там перепутал сегмент и смещение местами, думал что устанавливаю адрес 0x1234:0x5678, а на самом деле же 0x5678:0x1234. Но все равно по адресу [0x5678:0x1234] приходиться перезаписывать один байт на код команды iret (0xCF). Пока пользуюсь этим..
     
  5. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    А там кнопки нет над окном? Я точне не помню сейчас, если надо, могу чуть позже посмотреть.
     
  6. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
  7. Protorus

    Protorus New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2009
    Сообщения:
    51
    Mika0x65
    кнопки такой я как-то не нашел, а она была бы полезна..

    diamond
    О да, это подходит .. Спасибо.

    p.s. Сначала подумал, зачем выбрали такое выражение для magic-breakpoint'а, потом подумал еще и понял, что это очень удобно, их даже в чистовой версии проги убирать не нужно или закомментировать, не то что int 3, например.
     
  8. newbie

    newbie New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    1.246
    А чё, надо было xor eax,eax чтоль выбирать? :lol: