Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб май 21, 2022 10:12

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Вопрос: как отлаживать программы на форт?
Автор Сообщение
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
Я углубиться в тему отладки, так как интерактивного отладчика с возможностью пошагать по шитому коду мне очень не хавтало. Оказалось, что интерпретатор прямого шк как нельзя лучше подходит для написания встроенного отладчика с пошаговой отладкой, вищуализацией стеков и пр. Вот решил поделиться результатом Отладчик получился консольный, вход в него осуществляется словом BREAK а выход IDEQUIT. (IDE - Integrated Debug Environment) :)
Приатачиваю скриншот как это все выглядит. Инструмент получился очень мощный. Сейчас уже вижу что вместо адрессов арифметического стека и стека возвратов (от них все равно особо пользы нет) лучше отобразить например стек флоат и стек локальных переменных...


Вложения:
ThreadedCodeDBG.png
ThreadedCodeDBG.png [ 212.82 Кб | Просмотров: 1382 ]
Сообщение Добавлено: Сб ноя 20, 2021 18:21
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
По моему опыту все прекрасно отлаживается средствами Форта. Если GUI приложение, то я временно делаю его консольным (для этого в моем форте отправляю в комментарий
( GUI )
далее отлаживаемое место обрамляю
DEPTH .
некий код
DEPTH .
чтобы посмотреть не лоханулся ли я с глубиной стека,
факт достижения кодом определенных точеи определяю вставив отладочный вывод
." HERE 1 "
." HERE 2 "
." HERE 3 "
сообщения о достижении точек 1 2 и 3
верхушку стека где интересует вывожу
DUP U. OVER U. CR
значения интересующих переменных вывожу
SOME-VAR @ U. CR
ну и все массивы, записи и куски памяти рассматриваю вываливая их дамп
SOME-ARR 100 DUMP
Возможность разглядывать дампы самое сильное средство - сразу видна вся картинка.
В общем отладочный вывод валю в консоль. И все всегда легко отлаживается. Короче, прогон программы с отладочным выводом в консоль.

Выше советовали CATCH THROW везде где можно. А у меня в Форте этого нет. Руки не дошли добавить. Хотя ясно, что великая вещь, но и без нее все прекрасно отлаживается отладочным выводом в консоль средствами Форта. Короче, на практике отладчик не нужен. А был бы он отладка даже медленнее была бы, это-же надо сначала до нужного места добежать.

Даже если программа ГУЕвая, если в заголовке PE EXE стоит, что она консольная, то к ней сама прилепляется консоль. Окна остаются как были, но еще и консоль. У меня стандартный вывод Форта в эту консоль все и выводит. Отладил - указал в заголовке PE EXE, что прожка чисто ГУЕвая и все. У меня это словом GUI делается, которое при отладке закомментировано, а потом раскомментируется.
Сообщение Добавлено: Пн июл 05, 2021 16:18
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
Blackice писал(а):
Добрый день, тема старая и приведенные линки не работают. Хотелось бы узнать какие методы отладки есть на вооружении программиста для свеже написанного форт кода?

а скажем переопределить " : " и " ; " чтоб считать уровень вложений, запуск нового слова по команде с клавиатуры?
ну и еще выводить в отдельном окошке пераменты стеков и переменных?
да еще такое для каждого запущенного потока...
Сообщение Добавлено: Ср июн 30, 2021 13:58
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
Тут больше вопрос чем именно является форт.
Средой разработки или средой исполнения?
Этот вопрос каждый решает для своего форта сам.

Я просто сделал форт дофига расширяемым (по крайней мере, надеюсь на это), чтобы можно было донастроить различные фичи для поиска ошибочек.
Хотя сверху можно хоть макросы запустить :)
Сообщение Добавлено: Ср июн 16, 2021 18:02
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
Номер строки и позицию полезно видеть. Это и не так сложно.
Сообщение Добавлено: Ср июн 16, 2021 17:55
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
Цитата:
Только все эти вещи переусложнят форт-машину.

Ну тут уж нужно искать баланс между простотой реализации Форта и простотой программирования на нём. Если Форт пишется один раз, а программ на нём будет много, то можно и немного усложнить Форт (тем более, что я никаких сверхсложных улучшений и не предлагаю).
Сообщение Добавлено: Ср июн 16, 2021 07:26
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
zma писал(а):
В своём Форте при возникновении ошибки можно выводить текущую позицию в исходном тексте (имя файла, если есть; текущую строку с номером и позицию в ней) и стек возвратов (только не адреса, а названия слов). Это позволяет быстрее понять, где и что пошло не так


Только все эти вещи переусложнят форт-машину.
Я вообще у себя сделал отдельным модулем (исходник), подключаемым к форту при запуске.
В случае ошибки давал путь к файлу, строку с ошибкой, позицию (правда, глючит), а также расшифровку ошибки, если есть.
Сообщение Добавлено: Вт июн 15, 2021 16:10
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
Blackice писал(а):
Часто "свойфорт" запускаю под отладчиком Visual Studio но даже в этом случае нахождение ошибки весьма проблематично.

В своём Форте при возникновении ошибки можно выводить текущую позицию в исходном тексте (имя файла, если есть; текущую строку с номером и позицию в ней) и стек возвратов (только не адреса, а названия слов). Это позволяет быстрее понять, где и что пошло не так
Сообщение Добавлено: Сб июн 12, 2021 20:00
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
Blackice писал(а):
Как правило ошибки это перепутанные >R и R>, забытый RDROP или DROP, неучтенная ячейка на стеке... Даже при маленьких определениях это естественный человеческий фактор.

Обычно это уходит благодаря практике. Если ошибка сразу не видна, то отладчик может не быть включен вовремя, и результат будет тем же - проблема, exception, странное поведение и т.д.

Blackice писал(а):
Или например "пошагать" по скомпилированному шитому коду?

На форуме был скриншот, viewtopic.php?f=23&t=2643 Однако изображение куда-то уже делось (переехало? не знаю...), а по факту оказалось, что пока писался отладчик, необходимость в нем пропала. При программировании нарабатывается "распознавание паттернов" - например, незакрытый IF будет выявлен чисто зрительно по общему виду фрагмента кода.
Сообщение Добавлено: Сб июн 12, 2021 19:08
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
Спасибо, я использую все вышеперечисленное вами. Часто "свойфорт" запускаю под отладчиком Visual Studio но даже в этом случае нахождение ошибки весьма проблематично. Как правило ошибки это перепутанные >R и R>, забытый RDROP или DROP, неучтенная ячейка на стеке... Даже при маленьких определениях это естественный человеческий фактор.

С большыми форт-системами я малознаком. Есть ли возможность в какой-нибудь "пошагать" по определению? - типа source level debugger?, с визуализацией стеков. Или например "пошагать" по скомпилированному шитому коду?
Сообщение Добавлено: Сб июн 12, 2021 18:53
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
Blackice писал(а):
Добрый день, тема старая и приведенные линки не работают. Хотелось бы узнать какие методы отладки есть на вооружении программиста для свеже написанного форт кода?

В целом - отладочная печать. И встраивание тестов непосредственно в программу. Их же можно запустить в любой момент.

Сама разработка на Форте сильно тяготеет к небольшим функционально законченным фрагментам кода. Написали-отладили. В определенные моменты - тесты более высокого уровня (интеграционные и т.п.).
Сообщение Добавлено: Пт июн 11, 2021 17:00
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
Blackice писал(а):
Добрый день, тема старая и приведенные линки не работают. Хотелось бы узнать какие методы отладки есть на вооружении программиста для свеже написанного форт кода?

1) Запускать и пробовать
2) CATCH THROW везде где можно и нельзя
3) на каждом потенциально проблемном месте ставить вывод содержимого стека (в зависимости от устройства программы м. б. неактуалным)
4) Запускать под дебаггером откомпилированную программу с фортом. Можно еще просто форт запустить под дебаггером и тестить код там. Если сможете разобраться где в итогн ошибка-то произошла. Для написания своего форта как-то запускал под Аидой.
Сообщение Добавлено: Пт июн 11, 2021 16:25
  Заголовок сообщения:  Re: Вопрос: как отлаживать программы на форт?  Ответить с цитатой
Добрый день, тема старая и приведенные линки не работают. Хотелось бы узнать какие методы отладки есть на вооружении программиста для свеже написанного форт кода?
Сообщение Добавлено: Пт июн 11, 2021 15:17
  Заголовок сообщения:   Ответить с цитатой
simne писал(а):
UPD Нее. Я понял! Я хочу не исходники Ады на Форте, а видео процесса сотворения оных!
- шоу Форт-дом :))


Такое вряд ли, но [url=http://fforum.winglion.ru/viewtopic.php?t=94&start=0&postdays=0&postorder=asc&highlight=&sid=b6177e1efe7af817d535c9b8879a1bdf]
Медиа презентации Форта [/url] кое что есть, ( последняя ссылка )
Сообщение Добавлено: Пт июн 26, 2009 07:59
  Заголовок сообщения:   Ответить с цитатой
simne писал(а):
Я давно уже не боюсь, но программировать буду не только я, так что..


Если будет понимание, то технические проблемы разрешаться.
Сообщение Добавлено: Пт июн 26, 2009 07:53

Часовой пояс: UTC + 3 часа [ Летнее время ]


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB