Модернизация отладчика

Только технические вопросы по ЯОС и MINOS. Терминология и прочее - в других форумах.
Ответить
БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Модернизация отладчика

Сообщение БудДен » 08.12.19 23:57

btDecoder не понимает нового формата объектных файлов. Начало - тут:

https://forum.oberoncore.ru/viewtopic.php?f=22&t=6509

Ближайший план - попробовать проскочить с помощью чего-нибудь, например, отладчика.
Последний раз редактировалось БудДен 19.01.20 10:45, всего редактировалось 1 раз.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Чиним btDecoder

Сообщение БудДен » 14.12.19 23:04

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Модернизация отладчика

Сообщение БудДен » 19.01.20 11:21

Идём по журналу работы с отладчиком и вспоминаем.
  • 2019-16-11 cd737f66c7a6 - Добавление WMDebugger от Богдана Т.
  • тут же рядом "Поправил инструкции по сборке отладчика" - они находятся в WMDebugger.Tool, но позже отладчик стал собираться вместе с A2
  • «Почистил меню отладчика» - некоторые функции не работают, а присутствуют только в меню
  • Релиз 2019-11-24 - тут отладчик работал, это старый формат
  • (старое время)2016-01-05 - последний релиз в старом формате объектных файлов
  • 2019-11-25 - этот же релиз в старом формате объектных файлов слит с веткой, включающей отладчик
  • (старое время)2016-05-15 - релиз с уже новым форматом, выбранный так, чтобы новый формат уже укрепился (хотя мог быть и ошибочно выбран)
Далее начинается собственно починка отладчика для нового формата объектных файлов.
Что изменилось?
  • команды компиляции, к-рые продублированы в
  • формат некоторых данных
  • сломался Decoder

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Модернизация отладчика

Сообщение БудДен » 19.01.20 11:31

  • 2019-12-01 Отладка отладчика - просто отладочные сообщения
  • Убрал падение при открытии файла в отладчике - ничего, связано с логгера
  • Пытаюсь поправить команды компиляции - важно - команда компиляции зашита в WMDebugger.Mod. На самом деле
    она должна быть параметризована и зависеть от конфигурации системы. Но это потом, а пока она должна соотноситься с
    командой компиляции по умолчанию, к-рая есть где-то ещё (в самом компиляторе и в средах разработки, как я понял).
  • 2019-12-03 Отключаем поиск конца функции. Был некий костыль для нахождения точки выхода из функции. Он сломался, поэтому в данном коммите он отключён. Вроде бы его отключение не стало фатальным.
  • 2019-12-05 Ходьба частично заработала - здесь починена пр-ра BtDTraps.GetProcedure , к-рая находит адрес пр-ры по имени. Теперь она работает на базе новой рефлексии
  • 2019-12-08 В отладчике поправил навигацию по процедурам - здесь отключен поиск конца процедуры (ВАЖНО - он потом обратно включён спустя один коммит), также отключен поиск начала процедуры - вот этого я не понял. И это всё в этом коммите.
  • 2019-12-08 Переместить объектные файлы - цитирую «При открытии в отладчике, объектные файлы направлять в директорию obg, как и при компиляции» - изменена зашитая в WMDebugger.Mod команда компиляции
  • 2019-12-08 - Вернул обратно (кривой) поиск конца процедуры
    «Стало чуть лучше, но в момент срабатывания брекпойнта всё равно трап
    Разница в том, что раньше место не находилось из-за нулевого
    конца процедуры, а теперь - находится»
  • Тест btDecoder проходит. Тест такой:

    Код: Выделить всё

    WMDebugger.Open TestDbg.Mod ~
    TestDbg.TestSort~
    
    Decoder.Open TestDbg.TestSort~
    
    Никаких особых изменений в коде нет.
  • 2019-12-14 - За счёт отключения декодера отладчик заработал - в будущем декодер зарабатает и мы постраемся его включить, но для отладки на уровне исходников он не нужен




    SystemTools.FreeDownTo TestDbg BtDTraps~

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Модернизация отладчика

Сообщение БудДен » 19.01.20 12:11

  • (Старое время)2016-12-06 - пытаемся ещё скакнуть в будущее. За это время из заметного изменился формат метки.
  • 2019-12-19 - Кое-как пересобрал (ВСЁ ПРАВИТЬ) - собрал саму A2, но что-то отвалилось. Смотрим на изменения в отладчике:
    • - BtDTraps - сломана GetProcedure. В релизе от 2019-12-27 она типа починена, но это не привело к работоспособности отладчика
    • там же - отключено отображение переменных в PROCEDURE Variables и GetLocalVars. Из-за изменений в рефлексии.
    • - BtDecoder - пока не важно, т.к. его всё равно отключили
    • - FoxAMDBacked - отключаем assembler.UseLineNumbers - не знаю, зачем и почему.
    • - там же, BohdanPС - почти полностью отключён (изменился тип Label).
    • - FoxCompiler - исчезла пр-ра GetDefaults - в современных исходниках она не упоминается, значит, скорее всего, это нормально.
    • - WMDebugger.Mod - процедура GetLocalVars поломана аналогично такой же пр-ре в BtDTraps. А почему их вообще две?
    • - там же, убраны ссылки на Reflection.NewObjectFile - видимо, надо чинить.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Модернизация отладчика

Сообщение БудДен » 19.01.20 14:08

  • 2019-12-27 -
    • попытка починить BtDTraps.GetProcedure, с неизвестным исходом
    • Decoder.Mod - изменён порядок инициализации декодеров, но неизвестно, к чему это привело

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Модернизация отладчика

Сообщение БудДен » 19.01.20 14:12

План починки:
  • (есть)исправить команды компиляции
  • (то ли сделал, то ли не понадобилось)поскольку BohdanPC основан на FindPC, выяснить соответствие между FindPC и BohdanPC в старой версии.
  • (BohdanPC починился как-то)понять, как изменился формат FoxBinaryCode.Labels и попытаться починить BohdanPC
  • (не знаю, что это)проверить работоспособность GetProcedure
  • (перевёл на новую рефлексию)посмотреть на процедуры Variables и GetLocalVars (в более чем одном модуле)
Последний раз редактировалось БудДен 23.01.20 15:51, всего редактировалось 1 раз.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Модернизация отладчика

Сообщение БудДен » 19.01.20 16:02

В FindPC изменилась только диагностика: diagnostics.Error( ... ) заменилась на (Fox)Basic.Error(diagnostics, ...)

2016-10-08 LabelList.position изменил тип с Longint на FoxBasic.Position .

Похоже, эта тема началась 2016-10-07 коммитом "Added rich position to Scanner / Syntax Tree Elements"

В чём состояло изменение? Вместо одного LONGINT стала целая запись, в к-рой есть start и end.
Как был изменён код? postion переехал в position.start. А остальное?

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Модернизация отладчика

Сообщение БудДен » 20.01.20 17:30

Заработали точки останова в ветке от 2016-12-06.
Ходьба пока не работает.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Модернизация отладчика

Сообщение БудДен » 23.01.20 15:50

Показывается стек. Ходьба в примере с сортировкой вроде на вид работает, хотя не все функции тестировал.
Не хватает показа глобальных переменных.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Модернизация отладчика

Сообщение БудДен » 04.05.20 19:39

Вчера убрал проверку того, что печатаемое значение находится на стеке, коммит не скажу. Лучше заработала печать значений (жо этого всё время писало "объект не на стеке и не на куче", потому что он был на стеке другого процесса, а не процесса отладчика). Отсутствие проверки плохо, но пока пусть так будет.

Попробуем теперь сделать, чтобы отладчик обрабатывал не все прерывания, а только свои. Где-то я это уже копал.

Код: Выделить всё

	ExceptionRecord* = RECORD
		ExceptionCode*, ExceptionFlags*: SIGNED32;
		nextExceptionRecord* {UNTRACED}: ExceptionRecordPtr;
		ExceptionAddress*: ADDRESS;
		NumberParameters*: SIGNED32;
		ExceptionInformation*: ARRAY ExceptionMaximumParameters OF SIGNED32
	END;

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Модернизация отладчика

Сообщение БудДен » 04.05.20 23:22

Фильтр на нужные прерывания вроде работает, но зато сломался поиск места в коде в точке останова. Первая мысль - дело в кириллице, и это я сейчас всё ещё проверю, а потом уже спать. Нет. Это не она.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Модернизация отладчика

Сообщение БудДен » 05.05.20 15:08

Исправил ещё пару ошибок.
  • формировались кривые точки останова с нулевым адресом.
  • Не находилась процедура загрузки модуля (правда, вряд ли её удастся отладить отладчиком - модуль загружается в процессе его открытия отладчиком, и ставить точки прерывания после этого уже поздно). Видимо, нужно отказаться от показа потенциальных точек прерывания в коде загрузки модуля...
https://gitlab.com/budden/jaos/-/commit ... 0d6168d3c4

Ответить