Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт апр 19, 2024 07:48

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Quark: debug
СообщениеДобавлено: Ср окт 29, 2008 20:16 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Очень осторожно пробуем отладку.
Идея: после каждого call компилируется call <DEBUG> (векторное слово). Компилировать или нет, решает переменная DEBUG.

Т.е.

Код:
DEBUG ON

: under_debugger DUP + . ;

DEBUG OFF


после каждого из слов, скомпилированных внутри under_debugger, вызовется <DEBUG>. Что с этим делать - отдельный вопрос.

Версия кварка перезалита (BUILD_VERSION 10)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 29, 2008 21:19 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Очень осторожно

а какие трудности?

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 29, 2008 21:29 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
вопрос писал(а):
а какие трудности?

Чисто субъективные. Просто технически решение несложное, а вот то, что можно записать в вектор отладчика, может быть очень развернутым и многофункциональным. Так что мало ли что еще может потребоваться.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 29, 2008 21:39 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Что с этим делать - отдельный вопрос.
Ну что ж, раз упомянули :D
  1. отдельный стек для дибаггера подальше от основного
  2. отдельное пространство данных - эти два пункта с тем, чтобы глюк в основной программе не смог это пространство запортить
  3. автосохранение этих пространств при обвале программы
  4. возможность брейкпоинтов (не скажу сразу как)

Разумеется, это пожелания

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 29, 2008 23:31 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
вопрос писал(а):
отдельный стек для дибаггера подальше от основного

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

автосохранение этих пространств при обвале программы

возможность брейкпоинтов (не скажу сразу как)

Ну... ни один из этих пунктов не требует коррекции движка кварка. Все делается на уровне написания более или менее сложного обработчика <DEBUG>


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 30, 2008 01:08 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
Ну... ни один из этих пунктов не требует коррекции движка кварка. Все делается на уровне написания более или менее сложного обработчика <DEBUG>

Кроме выделения адресного пространства там, куда не могли бы прыгать или доставать слова кроме DEBUG (где он будет хранить свои запасные данные) может быть

что-то я не соображу :o

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 30, 2008 01:18 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Пока что не вижу нормального механизма для реализации. Вызовы call <DEBUG> рассыпаны в коде. Это та же задача, те же права на доступ. Можно создать еще одну область памяти через GlobalAlloc, но как надежно запретить "всем, кроме DEBUG" туда обращаться? Это раз.
Второе - это назначение отладчика. Это не сверхзащита-восстановление и заодно предохранение от "голубых экранов". Это просто пошаговый просмотр стека, памяти, переменных, выражений - как и в обычных отладчиках.

И наконец, третье.

"Вот бы отладчик с еще 4 пунктами" органично продолжает ветку сделанных в разное время и разными людьми пожеланий.
"Вот бы еще IDE"
"Вот бы еще визуальный конструктор форм"
"Вот бы еще ФортОС"
"Вот бы еще сверхоптимизацию кода".
и т.д. И без этого всего написать что-то ни-ни... а то вдруг получится? :)) Сдается мне, что отладка сейчас просто добавится в эту кучу отмазок.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 30, 2008 04:21 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
как и в обычных отладчиках
обычные отладчики ... ну, в принципе можно ограничиться векторизованным словом

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 30, 2008 10:14 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
вопрос писал(а):
возможность брейкпоинтов (не скажу сразу как)

Кстати, ничего, что при описанном подходе получается "тотальный брейкпойнт"? :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 30, 2008 11:06 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
вопрос писал(а):
возможность брейкпоинтов (не скажу сразу как)

Кстати, ничего, что при описанном подходе получается "тотальный брейкпойнт"? :)

Так это же и проблема - нужно бы, чтобы остановки получались избирательными.

Кстати - я не понял, насчёт "отмазки" - это о чём?

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 30, 2008 11:10 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Хищник писал(а):
"Вот бы еще IDE"


Хотябы интегрировать с редактором http://fpauk.narod.ru/dbgwc11.rar


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 30, 2008 11:17 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
вообще, редактор встроен в протон, достаточно сделать подсветку строк, т.к. я это не пробовал, но протон должен работать построчно. Большего требовать пока нельзя

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: debug
СообщениеДобавлено: Чт окт 30, 2008 17:33 
Не в сети

Зарегистрирован: Вт май 30, 2006 14:52
Сообщения: 18
Откуда: Таганрог, Ростовской обл.
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник писал(а):
Очень осторожно пробуем отладку.
Идея: после каждого call компилируется call <DEBUG> (векторное слово). Компилировать или нет, решает переменная DEBUG.

Т.е.

Код:
DEBUG ON

: under_debugger DUP + . ;

DEBUG OFF


после каждого из слов, скомпилированных внутри under_debugger, вызовется <DEBUG>. Что с этим делать - отдельный вопрос.

Версия кварка перезалита (BUILD_VERSION 10)


По своему опыту могу сказать - очень полезная вещь! Использую более 3-х лет.
Только у меня вызов отладчика компилирутся до вызова call, чтобы можно было вывести хотя бы имя выполняемого
слова и состояние стека (ов). В простейшем случае у меня вызывается MessageBox (система под WIN32).
Для избирательности брекпоинтов можно завести ещё одну переменную по состоянию которой определяем -продолжить или остановиться.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 30, 2008 17:58 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Ндя, а в СПФ хватало SEE!

_________________
Меня нет, не будет и не было.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 30, 2008 23:51 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
вопрос писал(а):
вообще, редактор встроен в протон, достаточно сделать подсветку строк, т.к. я это не пробовал, но протон должен работать построчно

Протон и работает построчно. Причем уже есть кнопки "выполнить одну строку" и "выполнить до курсора". Тонкость в том, что это именно "выполнить", а не "выполнить скомпилированный код, остановившись в месте, соответствующем исходному тексту, на котором стоит курсор". То есть интерпретируемые места прекрасно выполняются пошагово, а вот внутри определений пошагово выполняется только процесс компиляции.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2, 3  След.

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


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

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