|
Debugger
Описание встроенного отладчика.
Featured Встроенный отладчикТо что отличает наш эмулятор от других, и может быть именно то благодаря чему мы достигли большого прогресса -- наш встроенный отладчик. Для перехода в отладчик выберите команду Debug > Debug Views.
Слева вверху -- экран УКНЦ. Слева внизу -- отладочная консоль, в которой можно вводить команды; краткий список команд выдается по команде h. Справа вверху -- окно состояния текущего процессора: вверху в боксе его регистры, справа от них содержимое стека, ниже дизассемблированный блок возле адреса PC; правее вверху -- состояние портов, внизу -- состояние каналов обмена данными между процессорами. Справа внизу -- окно состояния памяти. Красным цветом везде отмечены ячейки памяти, которые изменились после очередного шага или прогона. Перед шагом/запуском сохраняется состояние всей памяти и регистров процессоров, что позволяет о каждой ячейке сказать, изменилась ли она. Команды отладочной консолиr -- показать содержимое регистров. r1 -- показать содержимое регистра R1. r1 1000 -- изменить значение регистра R1 на 1000. m -- дамп памяти с текущего адреса. m1000 -- дамп памяти с адреса 1000. mr1 -- дамп памяти с адреса из регистра R1. d1000 -- дизассемблировать несколько инструкций начиная с адреса 1000. p -- переключение отладочных окон и консоли на другой процессор (ЦП -- ПП). g -- пуск эмулятора, то же что команда Emulator > Run. g1000 -- поставить точку останова на адрес 1000 и пуск эмулятора. s -- шаг отладчика для текущего процессора. so -- шаг отладчика с обходом подпрограмм: дизассемблером вычисляется адрес следующей инструкции, ставится точка останова на следующую инструкцию и запускается эмулятор. u -- сохранение дампа памяти текущего процессора в файл. c -- очистка лога отладочной консоли СубтитрыВ окне дизассемблера есть возможность загрузки "субтитров" -- подготовленного текста с комментариями к дизассемблированному коду. Для загрузки субтитров нужно щёлкнуть в окно дизассемблера и нажать клавишу 's'. Пример текста субтитров: ; П/п поиска пилот-тона перед заголовком 130060: MTPS #200 ; Запретить прерывания 130064: MOV 23314$,R2 ; R2 = число перепадов уровня при поиске загол. 130070: MOV R5,R4 ; R4 = длина предыдущего интервала 130072: CALL 130636$ ; Проверка нажатия "СТОП" 130076: BIT #40,@#177710 ; Перепад произошел ? 130104: BEQ 130072$ ; Нет 130106: MOV @#177714,R5 ; R5 = длина текущего интервала 130112: TST @#177714 ; Сбросить готовность таймера 130116: BIT #250,@#177710 ; Готовность сброшена ? 130124: BNE 130112$ ; Нет 130126: SUB R5,R4 ; Вычислить разность между длинами интервалов 130130: BPL 130134$ 130132: NEG R4 130134: CMP R4,23322$ ; Разброс длин в норме ? 130140: BHI 130064$ ; Нет 130142: SOB R2,130070$ ; Цикл по R2 130144: MOV #10,R3 130150: MTPS #0 RETURN |