Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Вопрос: как отлаживать программы на форт? |
|
|
Я углубиться в тему отладки, так как интерактивного отладчика с возможностью пошагать по шитому коду мне очень не хавтало. Оказалось, что интерпретатор прямого шк как нельзя лучше подходит для написания встроенного отладчика с пошаговой отладкой, вищуализацией стеков и пр. Вот решил поделиться результатом Отладчик получился консольный, вход в него осуществляется словом BREAK а выход IDEQUIT. (IDE - Integrated Debug Environment) Приатачиваю скриншот как это все выглядит. Инструмент получился очень мощный. Сейчас уже вижу что вместо адрессов арифметического стека и стека возвратов (от них все равно особо пользы нет) лучше отобразить например стек флоат и стек локальных переменных...
Вложения: |
ThreadedCodeDBG.png [ 212.82 Кб | Просмотров: 5918 ]
|
Я углубиться в тему отладки, так как интерактивного отладчика с возможностью пошагать по шитому коду мне очень не хавтало. Оказалось, что интерпретатор прямого шк как нельзя лучше подходит для написания встроенного отладчика с пошаговой отладкой, вищуализацией стеков и пр. Вот решил поделиться результатом Отладчик получился консольный, вход в него осуществляется словом BREAK а выход IDEQUIT. (IDE - Integrated Debug Environment) :) Приатачиваю скриншот как это все выглядит. Инструмент получился очень мощный. Сейчас уже вижу что вместо адрессов арифметического стека и стека возвратов (от них все равно особо пользы нет) лучше отобразить например стек флоат и стек локальных переменных...
|
|
|
|
Добавлено: Сб ноя 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 делается, которое при отладке закомментировано, а потом раскомментируется.
По моему опыту все прекрасно отлаживается средствами Форта. Если 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 писал(а): Добрый день, тема старая и приведенные линки не работают. Хотелось бы узнать какие методы отладки есть на вооружении программиста для свеже написанного форт кода? а скажем переопределить " : " и " ; " чтоб считать уровень вложений, запуск нового слова по команде с клавиатуры? ну и еще выводить в отдельном окошке пераменты стеков и переменных? да еще такое для каждого запущенного потока...
[quote="Blackice"]Добрый день, тема старая и приведенные линки не работают. Хотелось бы узнать какие методы отладки есть на вооружении программиста для свеже написанного форт кода?[/quote] а скажем переопределить " : " и " ; " чтоб считать уровень вложений, запуск нового слова по команде с клавиатуры? ну и еще выводить в отдельном окошке пераменты стеков и переменных? да еще такое для каждого запущенного потока...
|
|
|
|
Добавлено: Ср июн 30, 2021 13:58 |
|
|
|
|
|
Заголовок сообщения: |
Re: Вопрос: как отлаживать программы на форт? |
|
|
Тут больше вопрос чем именно является форт. Средой разработки или средой исполнения? Этот вопрос каждый решает для своего форта сам. Я просто сделал форт дофига расширяемым (по крайней мере, надеюсь на это), чтобы можно было донастроить различные фичи для поиска ошибочек. Хотя сверху можно хоть макросы запустить
Тут больше вопрос чем именно является форт. Средой разработки или средой исполнения? Этот вопрос каждый решает для своего форта сам.
Я просто сделал форт дофига расширяемым (по крайней мере, надеюсь на это), чтобы можно было донастроить различные фичи для поиска ошибочек. Хотя сверху можно хоть макросы запустить :)
|
|
|
|
Добавлено: Ср июн 16, 2021 18:02 |
|
|
|
|
|
Заголовок сообщения: |
Re: Вопрос: как отлаживать программы на форт? |
|
|
Номер строки и позицию полезно видеть. Это и не так сложно.
Номер строки и позицию полезно видеть. Это и не так сложно.
|
|
|
|
Добавлено: Ср июн 16, 2021 17:55 |
|
|
|
|
|
Заголовок сообщения: |
Re: Вопрос: как отлаживать программы на форт? |
|
|
Цитата: Только все эти вещи переусложнят форт-машину. Ну тут уж нужно искать баланс между простотой реализации Форта и простотой программирования на нём. Если Форт пишется один раз, а программ на нём будет много, то можно и немного усложнить Форт (тем более, что я никаких сверхсложных улучшений и не предлагаю).
[quote]Только все эти вещи переусложнят форт-машину.[/quote] Ну тут уж нужно искать баланс между простотой реализации Форта и простотой программирования на нём. Если Форт пишется один раз, а программ на нём будет много, то можно и немного усложнить Форт (тем более, что я никаких сверхсложных улучшений и не предлагаю).
|
|
|
|
Добавлено: Ср июн 16, 2021 07:26 |
|
|
|
|
|
Заголовок сообщения: |
Re: Вопрос: как отлаживать программы на форт? |
|
|
zma писал(а): В своём Форте при возникновении ошибки можно выводить текущую позицию в исходном тексте (имя файла, если есть; текущую строку с номером и позицию в ней) и стек возвратов (только не адреса, а названия слов). Это позволяет быстрее понять, где и что пошло не так Только все эти вещи переусложнят форт-машину. Я вообще у себя сделал отдельным модулем (исходник), подключаемым к форту при запуске. В случае ошибки давал путь к файлу, строку с ошибкой, позицию (правда, глючит), а также расшифровку ошибки, если есть.
[quote="zma"] В своём Форте при возникновении ошибки можно выводить текущую позицию в исходном тексте (имя файла, если есть; текущую строку с номером и позицию в ней) и стек возвратов (только не адреса, а названия слов). Это позволяет быстрее понять, где и что пошло не так[/quote]
Только все эти вещи переусложнят форт-машину. Я вообще у себя сделал отдельным модулем (исходник), подключаемым к форту при запуске. В случае ошибки давал путь к файлу, строку с ошибкой, позицию (правда, глючит), а также расшифровку ошибки, если есть.
|
|
|
|
Добавлено: Вт июн 15, 2021 16:10 |
|
|
|
|
|
Заголовок сообщения: |
Re: Вопрос: как отлаживать программы на форт? |
|
|
Blackice писал(а): Часто "свойфорт" запускаю под отладчиком Visual Studio но даже в этом случае нахождение ошибки весьма проблематично. В своём Форте при возникновении ошибки можно выводить текущую позицию в исходном тексте (имя файла, если есть; текущую строку с номером и позицию в ней) и стек возвратов (только не адреса, а названия слов). Это позволяет быстрее понять, где и что пошло не так
[quote="Blackice"]Часто "свойфорт" запускаю под отладчиком Visual Studio но даже в этом случае нахождение ошибки весьма проблематично.[/quote] В своём Форте при возникновении ошибки можно выводить текущую позицию в исходном тексте (имя файла, если есть; текущую строку с номером и позицию в ней) и стек возвратов (только не адреса, а названия слов). Это позволяет быстрее понять, где и что пошло не так
|
|
|
|
Добавлено: Сб июн 12, 2021 20:00 |
|
|
|
|
|
Заголовок сообщения: |
Re: Вопрос: как отлаживать программы на форт? |
|
|
Blackice писал(а): Как правило ошибки это перепутанные >R и R>, забытый RDROP или DROP, неучтенная ячейка на стеке... Даже при маленьких определениях это естественный человеческий фактор. Обычно это уходит благодаря практике. Если ошибка сразу не видна, то отладчик может не быть включен вовремя, и результат будет тем же - проблема, exception, странное поведение и т.д. Blackice писал(а): Или например "пошагать" по скомпилированному шитому коду? На форуме был скриншот, viewtopic.php?f=23&t=2643 Однако изображение куда-то уже делось (переехало? не знаю...), а по факту оказалось, что пока писался отладчик, необходимость в нем пропала. При программировании нарабатывается "распознавание паттернов" - например, незакрытый IF будет выявлен чисто зрительно по общему виду фрагмента кода.
[quote="Blackice"]Как правило ошибки это перепутанные >R и R>, забытый RDROP или DROP, неучтенная ячейка на стеке... Даже при маленьких определениях это естественный человеческий фактор.[/quote] Обычно это уходит благодаря практике. Если ошибка сразу не видна, то отладчик может не быть включен вовремя, и результат будет тем же - проблема, exception, странное поведение и т.д.
[quote="Blackice"]Или например "пошагать" по скомпилированному шитому коду?[/quote] На форуме был скриншот, http://fforum.winglion.ru/viewtopic.php?f=23&t=2643 Однако изображение куда-то уже делось (переехало? не знаю...), а по факту оказалось, что пока писался отладчик, необходимость в нем пропала. При программировании нарабатывается "распознавание паттернов" - например, незакрытый IF будет выявлен чисто зрительно по общему виду фрагмента кода.
|
|
|
|
Добавлено: Сб июн 12, 2021 19:08 |
|
|
|
|
|
Заголовок сообщения: |
Re: Вопрос: как отлаживать программы на форт? |
|
|
Спасибо, я использую все вышеперечисленное вами. Часто "свойфорт" запускаю под отладчиком Visual Studio но даже в этом случае нахождение ошибки весьма проблематично. Как правило ошибки это перепутанные >R и R>, забытый RDROP или DROP, неучтенная ячейка на стеке... Даже при маленьких определениях это естественный человеческий фактор.
С большыми форт-системами я малознаком. Есть ли возможность в какой-нибудь "пошагать" по определению? - типа source level debugger?, с визуализацией стеков. Или например "пошагать" по скомпилированному шитому коду?
Спасибо, я использую все вышеперечисленное вами. Часто "свойфорт" запускаю под отладчиком Visual Studio но даже в этом случае нахождение ошибки весьма проблематично. Как правило ошибки это перепутанные >R и R>, забытый RDROP или DROP, неучтенная ячейка на стеке... Даже при маленьких определениях это естественный человеческий фактор.
С большыми форт-системами я малознаком. Есть ли возможность в какой-нибудь "пошагать" по определению? - типа source level debugger?, с визуализацией стеков. Или например "пошагать" по скомпилированному шитому коду?
|
|
|
|
Добавлено: Сб июн 12, 2021 18:53 |
|
|
|
|
|
Заголовок сообщения: |
Re: Вопрос: как отлаживать программы на форт? |
|
|
Blackice писал(а): Добрый день, тема старая и приведенные линки не работают. Хотелось бы узнать какие методы отладки есть на вооружении программиста для свеже написанного форт кода? В целом - отладочная печать. И встраивание тестов непосредственно в программу. Их же можно запустить в любой момент. Сама разработка на Форте сильно тяготеет к небольшим функционально законченным фрагментам кода. Написали-отладили. В определенные моменты - тесты более высокого уровня (интеграционные и т.п.).
[quote="Blackice"]Добрый день, тема старая и приведенные линки не работают. Хотелось бы узнать какие методы отладки есть на вооружении программиста для свеже написанного форт кода?[/quote] В целом - отладочная печать. И встраивание тестов непосредственно в программу. Их же можно запустить в любой момент.
Сама разработка на Форте сильно тяготеет к небольшим функционально законченным фрагментам кода. Написали-отладили. В определенные моменты - тесты более высокого уровня (интеграционные и т.п.).
|
|
|
|
Добавлено: Пт июн 11, 2021 17:00 |
|
|
|
|
|
Заголовок сообщения: |
Re: Вопрос: как отлаживать программы на форт? |
|
|
Blackice писал(а): Добрый день, тема старая и приведенные линки не работают. Хотелось бы узнать какие методы отладки есть на вооружении программиста для свеже написанного форт кода? 1) Запускать и пробовать 2) CATCH THROW везде где можно и нельзя 3) на каждом потенциально проблемном месте ставить вывод содержимого стека (в зависимости от устройства программы м. б. неактуалным) 4) Запускать под дебаггером откомпилированную программу с фортом. Можно еще просто форт запустить под дебаггером и тестить код там. Если сможете разобраться где в итогн ошибка-то произошла. Для написания своего форта как-то запускал под Аидой.
[quote="Blackice"]Добрый день, тема старая и приведенные линки не работают. Хотелось бы узнать какие методы отладки есть на вооружении программиста для свеже написанного форт кода?[/quote] 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] кое что есть, ( последняя ссылка )
[quote="simne"] UPD Нее. Я понял! Я хочу не исходники Ады на Форте, а видео процесса сотворения оных! - шоу Форт-дом :))[/quote]
Такое вряд ли, но [url=http://fforum.winglion.ru/viewtopic.php?t=94&start=0&postdays=0&postorder=asc&highlight=&sid=b6177e1efe7af817d535c9b8879a1bdf]
Медиа презентации Форта [/url] кое что есть, ( последняя ссылка )
|
|
|
|
Добавлено: Пт июн 26, 2009 07:59 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
simne писал(а): Я давно уже не боюсь, но программировать буду не только я, так что..
Если будет понимание, то технические проблемы разрешаться.
[quote="simne"] Я давно уже не боюсь, но программировать буду не только я, так что.. [/quote]
Если будет понимание, то технические проблемы разрешаться.
|
|
|
|
Добавлено: Пт июн 26, 2009 07:53 |
|
|
|
|