AHD

AHD - Демон обработки исключений.
©Dimadze
V1.0

NewSGold

 

Обсуждение: siedevelop

Эльф отлавливает исключения (exceptions)
такие как:

  • Data Abort
  • Prefetch Abort
  • Undefined Instruction

 

Скриншоты:

Сообщение вместо пикоффа Data AbortСообщение вместо пикоффа Prefetch Abort

 

Описание

При этом никакой патч для него не нужен.  На языке сименсоводов эти исключения есть одни из  видов пикоффов (exit'ов) Как правило, отловленные (нейтрализованные) пикоффы визуализируются (во сказанул  :)) сообщением с определённой  информацией: CepID процесса, в котором произошёл пикофф, флаги регистра CPSR, режим процессора, и непосредственно адрес ошибки, за исключением Prefetch Abort (из-за особенности вида этой ошибки), там несуществующий адрес перехода. Также ведётся лог этих ошибок,   информация там немного расширенная, и, кстати, есть хорошая опция для дебага. Если ошибка случилась в RAM, то проанализировать её мы не можем, так как данные сразу теряются, и поэтому если включть экстра-опцию, то эльф сохранит ту область, в которой случился пикофф, потом можете его загрузить себе на компьютер, дизассемблировать и узнать, в чём было дело. В конфигурационном файле (bcfg) есть очень гибкие настройки. И да, стоит заметить, 100% (ну и наверно даже 50 %) гарантию отлова таких типов пикоффа я не даю, так что радуйтесь тому что дают, всё равно 50 % больше чем ничего, и тем более вам никто не запрещает его настроить или не запускать :)

Может в последствии алгоритм обработки улучшу и будет более качественная работа эльфа. Собственно код визуализатора не входит в обработчик, как это было в патче, это в значительной мере улучшает всё дело. Обработчик посылает GBS - сообшение по IPC (ну почти) с данными о пикоффе. Так как сам эльф содержит в себе и обработчики, и визуализатор, и логгер, то получается эльф посылает сообщение самому себе, но эти сообщения могут поймать и другие эльфы. Но сам AHD после их приёма уничтожает данные о пикоффе, чтобы не было утечки памяти, поэтому делать вам дополнительный визуализатор нет смысла ...

Замечание:

К примеру, если у вас в библиотеке функция ShowMSG есть показ сообщений, но с привязкой к вызывающему её CSM (как это раньше было на CX75/25, теперь нормально, исправили), то сообщение показыватся не будет, вспомните непоказ сообщений при реконфигурации демонов. Это исправляется с пофиксенной функцией ShowMSG.

Описание исключений:

Ладно, оставим болтологию, вот краткая справка по отлавливаемым исключениям:

Data Abort

Отказ  чтения/записи данных, возникает когда процессор пытается считать (или записать) с несуществующего адреса (не определён в таблице MMU), либо данный адрес имеет особые атрибуты.

 

Prefetch Abort

Ошибка предвыборки адреса. То есть будущий переход на несуществующий адрес. Процессор перед тем как куда-то перейти проверяет адрес на его существование, если его нет, то генерирует ошибку. Так же ошибка возникает при команде BKPT - точка останова - breakpoint. Это инструмент для debug'a.

 

Undefined Instruction

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

 

 

В эльфах эти ошибки могут быть как из коряво написанного кода, который не учитывает все аспекты или просто он неверно написан, либо из-за ошибок в RAM, то есть из-за каких-либо действий других задач, которые повредили код (так как эльфы всегда в RAM) в котором, впоследствии, случилась ошибка.

Проверка:

Для проверки работы эльфа есть генераторы пикоффов:

 

История версий:

alpha - Первая публичная версия.

1.0 - Добавлена экстра-опция и NewSGold - версия.


Предыдущая страница: SuDoKu Game
Следующая страница: Патчи





Вы можете добавить свой комментарий:


Звёздочкой (*) помечены пункты, которые обязательны для заполнения.
Если требуемые условия не будут выполнены, запрос на добавление
комментария будет проигнорирован!






Close
Red Z Group