Русскоязычный форум закрыт из-за отсутствия активности (доступен только для чтения).
Пожалуйста, пользуйтесь англоязычной его версией. Приносим извинения за неудобства
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Вход


Опции
К последнему сообщению К первому непрочитанному
Offline уни  
#1 Оставлено : 24 ноября 2010 г. 9:31:30(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Последняя редакция плагина: debug_20101127.7z


Могу попробовать через дополнение mcadefi приделать свой старый отладчик: Отладчик для программ Mathcad.

Будет работать, но с большими ограничениями. Можно будет передавать в отладчик только вектор чисел (произвольным размером).

Отредактировано пользователем 10 июля 2011 г. 4:22:59(UTC)  | Причина: Не указана

Россия навсегда!
Вячеслав Мезенцев

Wanna join the discussion?! Login to your Форум проекта SMath forum account. Новые регистрации запрещены.

Offline smath  
#2 Оставлено : 24 ноября 2010 г. 11:40:00(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Звучит заманчиво! Правда я не совсем понимаю как это возможно... Если потребуются какие-нибудь изменения в коде самой SMath Studio - скажите, постараюсь сразу их сделать, а изменённые модули передать Вам.
Offline уни  
#3 Оставлено : 24 ноября 2010 г. 11:44:06(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Нет, изменений не потребуется. Он написан как независимое приложение и работает в "неуправляемом пространстве". Я просто давно уже им не занимался. Это, конечно, будет не полноценный отладчик, а только для численных расчётов. Работает очень просто. Мне нужно только его немного изменить, т.к. он привязывался к окну маткада.
Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#4 Оставлено : 24 ноября 2010 г. 13:24:20(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Цитата:
Правда я не совсем понимаю как это возможно...
Ну, это громко сказано: "отладчик". На самом деле это просто внешняя численная функция bp(), которая выполняется в отдельном потоке. Ещё рядом крутится интерфейс, который взаимодействует с этой функцией.
Отладка получается, когда вставляешь функцию bp() где-то в коде. Так отладчик перехватывает выполнение и тормозит вычисление функции, при этом переданные в функцию данные можно отображать в окне отладки. Всё просто. Надо только написать Good

К сожалению, с пол пинка запустить совместно не удалось. Проект скомпилировался в студии, но вот LoadLibrary() в mcadefi не отрабатывает. Библиотека не загружается. Придётся всё начинать сначала: создать новый тестовый проект и постепенно перекидывать файлы.

Настоящий отладчик следует писать сразу на C# и чтобы он работал в управляемом окружении, но, боюсь, меня на второй такой подвиг не хватит.
Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#5 Оставлено : 24 ноября 2010 г. 15:55:42(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Удалось запустить интерфейс, но с ошибками рантайма. Пытается даже работать!


В отладчике три функции:
Код:

Дополнение обрабатывает следующие вхождения:
bp("матрица") - [debug.dll] [ Array ] Call breakpoint
echo("матрица") - [debug.dll] [ Array ] Send vars values
echofmt("матрица") - [debug.dll] [ Array ] Send vars values with format
Россия навсегда!
Вячеслав Мезенцев
Offline Samar  
#6 Оставлено : 24 ноября 2010 г. 16:45:45(UTC)
Samar


Статус: Member

Группы: Registered
Зарегистрирован: 15.07.2008(UTC)
Сообщений: 102
Мужчина
Откуда: Брест

Сказал «Спасибо»: 8 раз
Поблагодарили: 2 раз в 2 постах
Как я понял, отладка идет с помощью специальных функций, которые выводят информацию в отдельное окно?
Offline уни  
#7 Оставлено : 24 ноября 2010 г. 17:41:01(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Да, в два окна. Одно для вывода лога в виде текста, а второе в виде таблицы, показывает переменные, заданные в функции bp().
Россия навсегда!
Вячеслав Мезенцев
Offline Samar  
#8 Оставлено : 24 ноября 2010 г. 18:16:58(UTC)
Samar


Статус: Member

Группы: Registered
Зарегистрирован: 15.07.2008(UTC)
Сообщений: 102
Мужчина
Откуда: Брест

Сказал «Спасибо»: 8 раз
Поблагодарили: 2 раз в 2 постах
Мне кажется, что данную вещь лучше всего встроить в саму программу.
Offline уни  
#9 Оставлено : 24 ноября 2010 г. 18:54:04(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Конечно лучше, и к кому мне было обращаться, когда я хотел такую фичу в Маткаде? Они "встроили" свой вариант "отладки" в версии старше 11. Очень похожий на мой, только без интерфейсных заморочек. Они определили пару функций: trace(S, x, y, z, ...) и pause(S, x, y, z, ...) (мои аналоги: echo() и bp()) и на этом дело закончилось. Так до сих пор и существует. Ничего лучше пока не придумали.

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

Человеческие средства отладки всегда были необходимы в маткаде. Вон взять Матлаб, там настоящий отладчик, профессиональный, бегает по исходнику m-файла тока-так. Не знаю как в новых версиях maple, но там с этим делом обстояло не лучше... полное извращение, чуть ли не ручное отлаживание. Сейчас не знаю, может придумали чего.

Так что к этому вопросу надо подходить по-серьёзному. Средства отладки - это порог областей применимости программ. Мой тутошний вариант - это просто протез на время.
Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#10 Оставлено : 26 ноября 2010 г. 23:01:50(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Придётся с нуля пересобирать. Не могу от креша избавиться при выходе из программы. Отладчик написан с использованием MFC библиотеки. Я тогда её терпеть не мог и сейчас того же мнения... конечно, по сравнению с созданием рюшечек на голом Win32API это был прогресс, но с развитием визуального программирования MFC выглядит издевательством над программистом.
Функции, кстати, работают, но без интерфейса толку от них мало. Потом можно по аналогии сделать плагин на C#, он будет куда более функциональным, а уже потом отлаженные его части можно внедрить непосредственно в программу.
Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#11 Оставлено : 27 ноября 2010 г. 16:51:38(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
ЭТО ПЛАГИН ВТОРОГО УРОВНЯ! Сначала должен быть установлен mcadefi плагин. Содержимое архива поместить в папку userefi!

Тестовая версия: debug_20101127.7z



Значится так, дорогие мои. Строго следуем инструкциям и не нажимаем на непонятные кнопки!

В отладчик включены 2 функции: echo() и bp(). Обе принимают вектор-столбец в качестве параметра. Элементы вектора должны быть только числами или переменными, которые содержать числа! И никак иначе.

echo() - выводит переменные в окно сообщений отладчика;
bp() - выводит значения переменных в окно переменных (табличку).

Когда вы запустите SMath Studio сразу покажется окно отладчика (это опционально, но пока не работает, т.е. можно сделать, чтобы окно было невидимым). Настройте размеры окна под себя и нажмите кнопку с фотиком - это сохранение вида в файле настроек. При следующем запуске окно примет вид, какой был при последнем сохранении.

Далее пробуем команду вывода echo(). Пишем:
echo(stack(1;2;3;4;5;6;7))= и вычисляем это дело. Эта функция нужна для ведения лога вычислений. Имейте в виду, что в отладчике есть ограничение на размер лога и старые сообщения автоматически обрезаются, а новые добавляются в конец.

Далее пробуем команду bp(). Пишем тоже самое:
bp(stack(1;2;3;4;5;6;7))= и вычисляем. Всё как бы подвиснет. Выражение будет выделено зелёной рамкой, а в окне отладчика в списке переменных появятся введённые числа. Не бойтесь, процессор не грузится. В таком состоянии программа может находиться вечно. Заметьте, что на тулбаре нажата кнопка паузы "||". Теперь её отжимаем и нажимаем на кнопку продолжить ">". Всё работает. Если нажать на кнопку стоп, то вычисления остановятся.
Чтобы пересчитать документ нужно нажать кнопку с одной стрелкой "->" - это равносильно нажатию F9.

А вот, чтобы заставить эту функцию вычисляться в программном блоке... тут надо применять хитрости. Спросим Андрея почему функция не вычисляется в программном блоке?

Отредактировано пользователем 27 ноября 2010 г. 18:09:54(UTC)  | Причина: Не указана

Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#12 Оставлено : 27 ноября 2010 г. 18:24:39(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Как использовать...
Россия навсегда!
Вячеслав Мезенцев
Offline build_your_web  
#13 Оставлено : 28 ноября 2010 г. 3:21:00(UTC)
build_your_web


Статус: Advanced Member

Группы: Developers, Registered
Зарегистрирован: 28.08.2009(UTC)
Сообщений: 127

Сказал(а) «Спасибо»: 19 раз
Поблагодарили: 4 раз в 4 постах
Не ожидал настолько продвинутого дебаггера.
Думал будет что-то типа консоли и пары кнопок.
Offline уни  
#14 Оставлено : 28 ноября 2010 г. 8:39:27(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Там заложено больше возможностей. Это MDI интерфейс и матрицы можно было просматривать в отдельных окнах, но здесь для этого мне придётся в mcadefi плагине реализовать недокументированные возможности маткада по вложенным структурам. Думаю, что это не имеет смысла, лучше написать отладчик как низкоуровневый плагин SMath, тогда там будет много возможностей, в т.ч. преобразовывание выражений в нём.

Это просто пример, как бы это выглядело и работало.
Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#15 Оставлено : 28 ноября 2010 г. 8:58:00(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Кстати, шаблоны - это файлы буфера обмена (t1.clp - t6.clp). Можно скопировать любое выражение в буфер обмена, потом открыть его (clipbrd.exe) и сохранить содержимое в .clp файле (для NT) и подсунуть в папку userefi. Поддерживается только 6 шаблонов. При нажатии на кнопку выбранного шаблона он скопируется в буфер обмена, а потом автоматически вставится в документ.
Мне было лень каждый раз набирать bp(), а ещё в маткаде очень не просто было создать матрицу с одним элементом.
Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#16 Оставлено : 28 ноября 2010 г. 12:50:25(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Залил в svn. Можете посмотреть как это выглядит. Начал писать года 4-5 назад. Плохо то, что я использовал сторонний компонент для отображения таблиц. Поэтому пришлось целый проект добавлять в зависимость. Все компилится, скачал, проверил.
Конфигурации: Debug и Release. Остальные не трогайте. Студия: 2008.
Код путанный, это было моё первое (как всегда) приложение под MFC. Я всегда брался за сложные вещи и с самого начала.

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

Отредактировано пользователем 28 ноября 2010 г. 12:56:39(UTC)  | Причина: Не указана

Россия навсегда!
Вячеслав Мезенцев
thanks 1 пользователь поблагодарил уни за этот пост.
mikka оставлено 28.11.2010(UTC)
Offline zhuk  
#17 Оставлено : 28 ноября 2010 г. 15:05:20(UTC)
zhuk


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 16.02.2010(UTC)
Сообщений: 114
Мужчина
Откуда: /dev/random

Сказал «Спасибо»: 4 раз
Поблагодарили: 13 раз в 11 постах
из-за некого типа гражданской наружности Уни smath менее чем за неделю из достойного калькулятора превратился в ядрёнукачарышку!)))) мне нравится! спасибо!!!!
неофициальный справочник https://sites.google.com/site/mikkhalichlab/home

jabber конференция smath@conference.jabber.ru
thanks 1 пользователь поблагодарил zhuk за этот пост.
уни оставлено 28.11.2010(UTC)
Offline уни  
#18 Оставлено : 28 ноября 2010 г. 18:32:09(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Надо только признать, что это было бы не возможно без заложенных в SMath Studio возможностей. Можно, конечно, ещё maple приделать как плагин, но это может поиметь оборотную сторону как с Mathcad. Там народ и не подозревал, что пользуется maple'овским движком для символьных вычислений, а вот когда срок подошёл... маткадовцы взялись за голову, они не развивали свои кадры в этом направлении, да и движок сам использовали только на 2% имеющихся возможностей, что вообще говоря не есть показатель умственной развитости менеджеров, которые такую связь одобрили. Купили потом лицензию MuPAD, а он продался конкурентам... сейчас Маткад у разбитого корыта. Да ещё и, возможно, перестанет поддерживать UserEFI интерфейс. Они оставляют его только разве что по просьбе Валерия Фёдоровича и другим похожим владельцам ПО, основанном на этой устаревшей технологии. Причём взамен ничего не предлагая.

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

Так что желательно поднапрячься товарищам девелоперам и явить миру что-нить достойное хотя бы части символьных возможностей Мэпла. Тут ответ, что всё в руках плагинописателей, не потянет, т.к. либо это математическая программа, либо просто интерфейс для плагинов и не более того. Фотошоп тоже менеджер плагинов, но многое умеет и сам.

Путь в общем-то не сложный. Ядро мэпла состоит из где-то 100 простых символьных операций, которые вообще даже имён не имеют, а вызываются по номеру. Всё остальное на них основано. Нужно взять какую-нить старую версию мэпла, где можно было посмотреть исходники символьных функций и попробовать портировать что-нить. Вот тогда появятся идеи что и как делать дальше. Может и типов каких добавить. Либо заглянуть в opensource проект какой и что-то взять оттуда. MuPAD очень похож по синтаксису с maple, но у него уже некая объектность появилась, как и у самого maple.
Россия навсегда!
Вячеслав Мезенцев
Пользователи, просматривающие эту тему
Guest
Similar Topics
Отладчик (Предложения)
по mikka 03.08.2011 2:52:50(UTC)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.