Вверх ↑
Этот топик читают: Гость
Ответов: 1291
Рейтинг: 47
#1: 2013-09-07 19:08:16 ЛС | профиль | цитата
Хотелось бы иметь возможность встроить во все компоненты некий механизм отладки, который, в случае крушения программы выдавал окно с уникальным порядковым номером элементаконтейнера, желательно в формате схемы Хиасм чтобы можно было локализовать проблемный участок кода. Ведь это возможно встроить в кодогенератор, чтобы каждый элемент, в случае режима отладки, добавлял в код нечто вроде try .. raise exeption - ну или как там это делается?

А то непостоянно возникающий глюк - исключение при закрытии программы все не знаю как отловить. Был бы постоянным - покромсал бы схему, локализовал бы. Жаль, придется пользователям давать как есть, с этим глюком. У кого какие идеи?
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 1343
Рейтинг: 31
#2: 2013-09-07 20:02:00 ЛС | профиль | цитата
смешно

а вообще есть 1 выход самый простой:
берёш и отбираеш потихоньку куски схемы тоесть убереш функцию запускаеш смотриш итд если нето то жмёш Ctrl+Z и кусок вернётся который удалил
либо опять же етот метод уместен для отловки вирусов так же делаеш но без открытия просто проверяеш на ВТ
карма: 2

0
Ответов: 4631
Рейтинг: 749
#3: 2013-09-07 21:25:13 ЛС | профиль | цитата
Ну, с блоками try...except вообще может быть трудно из-за покромсаного sysutils.pas к текущим компиляторам.
карма: 26

0
Ответов: 1291
Рейтинг: 47
#4: 2013-09-07 22:59:55 ЛС | профиль | цитата
Rysik, именно так бы я и сделал
покромсал бы схему

если бы глюк был СТАБИЛЕН.

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

Как вариант - запуск параллельного процесса-контроллера кому компоненты сообщают о начале и успешном конце работы своего кода, вместе со своим идентификатором. И если прога упала, то контроллер выдает список компонентов которые не сообщили об успешном завершении своего дела. В принципе, этот контроллер можно в виде отдельной программы-отладчика сделать, чтоб полностью изолировать от проги. А обмен инфой - через IPC.
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 3851
Рейтинг: 159
#5: 2013-09-07 23:29:54 ЛС | профиль | цитата

Aziz писал(а):
запуск параллельного процесса-контроллера кому компоненты сообщают о начале и успешном конце работы своего кода, вместе со своим идентификатором.
логирование в файл должно помочь - если прога успешно добралась до конца - лог-файл авто-удаляется. Если прога упала - в логе будет что почитать. Точки, с которых писать лог, придётся выбирать самому, в зависимости от структуры проги.
карма: 0
начавший
0
Ответов: 1291
Рейтинг: 47
#6: 2013-09-08 00:04:30 ЛС | профиль | цитата
Это первое о чем я думал.. И кстати реализовал в недавней проге на основе JanFX, только лог заменил позже реестром - там счетчик при старте формы увеличивается на 1, а после старта обнуляется. Если прога 3 раза упала то происходит полный сброс к дефолтным настройкам.

Но лог не прокатит - во первых в сложной схеме это нереально будет сделать (а глюки именно в сложных схемах как правило), точек будет немерено, поди угадай, во вторых в случае непостоянного глюка этот лог будет разбухать на гигабайты. Необходимо нечто более гибкое.
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 3851
Рейтинг: 159
#7: 2013-09-08 11:29:10 ЛС | профиль | цитата

Aziz писал(а):
точек будет немерено, поди угадай
чтобы не запутаться лучше поделить схемку на функциональные блоки

Aziz писал(а):
в случае непостоянного глюка этот лог будет разбухать на гигабайты
есть смысл удалять успешно завершившиеся события
карма: 0
начавший
0
Ответов: 1291
Рейтинг: 47
#8: 2013-09-08 12:10:15 ЛС | профиль | цитата
у меня имеются функц. блоки-контейнеры, но в каждый из них заходит и выходит до 10-20 линков, от разных частей (блоков) схемы. В каком направлении идут события в какой послед-ти - уже не очевидно. Тем более что модули тесно взаимодействуют и обмениваются инфой. На каждый линк по логу ставить мне как-то лень, особенно если:

All: 3855, sdk: 820, MultiElements: 111, Core: 575, links: 0, points: 12606


карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 1343
Рейтинг: 31
#9: 2013-09-08 12:58:12 ЛС | профиль | цитата
а у тя идёт краш программы или Runtime ?
если краш то ничем немогу помочь а если рунтайм то есть схемка для отловки этих рунтаймов и разьяснение от чего они итд
карма: 2

0
Ответов: 1291
Рейтинг: 47
#10: 2013-09-08 13:00:29 ЛС | профиль | цитата
Программы - нарушение доступа.
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 1061
Рейтинг: 22
#11: 2013-09-08 13:41:44 ЛС | профиль | цитата
Aziz писал(а):
нарушение доступа.

К чему?

Можешь показать все ошибки которые появлялись/появляются?
карма: 0

0
Ответов: 1291
Рейтинг: 47
#12: 2013-09-08 14:01:52 ЛС | профиль | цитата
Ошибка всегда одна - ошибка чтения, но с разным адресом:

exeption_.png

Чаще всего адрес бывает вида 000001. Читал что это от обращения к уже несуществующим данным. То есть из-за потоков при закрытии проги они закрываются неодновременно что ли. И живой еще поток запрашивает данные уже "мертвого". Вся схема тактируется (синхронизируется) генератором 500 мс. Пробовал перед выходом событием onClose формы принудительно и с ожиданием завершения останавливать все потоки и таймеры - не помогло.

Причем интересно что там не просто Exсeption, а двойной Exсeption Exсeption. Чтобы это значило? Не нашел ничего про двойной Exсeption.

Эта прога - утилита для Форекс. Так сказать, "лопата", как я ее называю, для золотоискателей на Форекс. Как известно во времена золотой лихорадки разбогатели также и те кто продавал лопаты и др. оборудование.. Эта супер-лопата с кнопками "Купить" "Продать", и множеством других функций и удобств (например, автокопание) но как видите, глюковатая..((
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
файлы: 1exeption_.png [22.9KB] [617]
Ответов: 1061
Рейтинг: 22
#13: 2013-09-08 14:26:07 ЛС | профиль | цитата
Aziz, что выполняет программа при закрытии?
карма: 0

1
Голосовали:Aziz
Ответов: 1291
Рейтинг: 47
#14: 2013-09-08 15:00:59 ЛС | профиль | цитата
Ваш вопрос меня озадачил..)) Пришлось проследить куда идут все провода после onClose..

Идет на хаб от кнопки "Stop", и как следствие вызывает ее автонажатие и следующие события:

1) Пишет в реестр команду "Stop"
2) Подает событие на воспроизведение звука "Stop" из массива звуков.
3) И еще подает событие на окончание записи горячих клавиш и установки пользовательских цветов.
4) Останавливает таймеры
5) Пишет в реестр настройку для включения щелкающего звука браузера IE обратно.

Вроде все.

Тут надо это пояснить что я в проге реализовал присвоение любой горячей клавиши кнопкам программы и цветов ее интерфейсу, а работает это так - пользователь входит в режим изменения цвета или хоткея, затем жмет выбранный хоткей или цвет, затем жмет ту клавишу которой он это хочет присвоить. Соответственно кнопка посылает сигнал окончания записи и свой ID. И все это сразу пишется в реестр в виде длинной строки с разделителем.

Может, воспроизведение звука на выходе иногда крушит прогу?
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 1061
Рейтинг: 22
#15: 2013-09-08 15:39:49 ЛС | профиль | цитата
Попробуй по одному эти пункты отключать!
------------ Дoбавленo в 15.38:
или сначала все, если исчезнет ошибка, по одному! )
------------ Дoбавленo в 15.39:
Может быть программа закрываясь, не успевает отработать все пункты? )
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)