Четвертый Borland C++ и его окружение

       

Отладка резидентной в памяти программы


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

вы начинаете отлаживать резидентную часть. Давайте рассмотрим

процесс отладки резидентной программы.

С помощью Turbo Debugger вы можете отлаживать драйвер клавиатуры. При этом для перемещения по отладчику пользуйтесь "мышью".

  • При компиляции или ассемблировании резидентной программы

    обеспечьте наличие в ней отладочной информации.

  • Запустите отладчик и загрузите программу.
  • Установите точку останова в начале резидентной части кода.
  • С помощью команды Run Run запустите рабочую часть программы.
  • Отладьте рабочую часть программы с помощью обычных методов.
  • Затем выйдите из TSR. Резидентная часть остается в памяти.
  • Чтобы сделать резидентным отладчик, выберите команду File Resident. На TSR это не повлияет. После этого вы можете вернуться в DOS и вызвать TSR.
  • В командной строке DOS нажмите оперативные клавиши вызова



    резидентной программы и работайте с ней как обычно.

  • Выйдите из TSR. Теперь выполняется резидентная часть TSR,

    и отладчик обнаруживает точку останова. Вы можете отлаживать резидентный код.

  • Второй метод отладки резидентной части TSR предусматривает выполнение ее из командной строки DOS и использование

    окна CPU отладчика для отладки содержащей TSR области ОЗУ.

  • Скомпилируйте программу с отладочной информацией.
  • Используйте утилиту TDSTRIP для удаления из программы

    таблицы идентификаторов и помещения ее в файл .TDS.

  • Запустите TSR из командной строки.
  • Запустите утилиту TDMEM, которая выводит схему использования памяти. Запомните адрес сегмента, где загружена резидентная часть вашей программы.
  • Загрузите отладчик и с помощью команды File Symbol Load

    загрузите таблицу идентификаторов TSR (файл .TDS).

  • Установите в начале резидентной части TSR точку останова.
  • Чтобы сделать отладчик резидентным, выберите команду File Resident.
  • В командной строке DOS выполните резидентную часть TSR,

    нажав ее оперативную клавишу, и работайте с программой




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

    кодом в памяти. Идентификаторы в таблице отстоят друг от

    друга на корректное число байт, но абсолютный адрес первого идентификатора не определен, так как DOS загрузила

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

    первый идентификатор в памяти, используйте команду File Table.


  • Используйте команду File Table Relocate для помещения

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

    коду (программе). Для этого в ответ на подсказку отладчика задайте адрес сегмента Seg вашей резидентной программы, который определен с помощью утилиты TDMEM, плюс шестнадцатиричное значение 10 (для PSP размером 256 байт).


  • Дизассемблированные из памяти операторы синхронизированы

    с информацией из таблицы идентификаторов. В случает наличия исходного файла исходные операторы выводятся на той

    же строке, что и информация из таблицы идентификаторов.

  • Для перехода к сегменту оперативной памяти, где находится

    ваша резидентная программа, используйте команду Goto

    (клавиши Ctrl-G). Это можно сделать, используя адрес сегмента вашей программы TSR, за которым следует смещение

    0000H, или с помощью перехода на конкретную метку вашей

    программы.


  • Отладьте резидентную часть программы.


    Содержание раздела