Хотелось бы иметь возможность встроить во все компоненты некий механизм отладки, который, в случае крушения программы выдавал окно с уникальным порядковым номером элементаконтейнера, желательно в формате схемы Хиасм чтобы можно было локализовать проблемный участок кода. Ведь это возможно встроить в кодогенератор, чтобы каждый элемент, в случае режима отладки, добавлял в код нечто вроде try .. raise exeption - ну или как там это делается?
А то непостоянно возникающий глюк - исключение при закрытии программы все не знаю как отловить. Был бы постоянным - покромсал бы схему, локализовал бы. Жаль, придется пользователям давать как есть, с этим глюком. У кого какие идеи?
Этот топик читают: Гость
Ответов: 1291
Рейтинг: 47
|
|||
карма: 3 |
|
Ответов: 1343
Рейтинг: 31
|
|||
смешно
а вообще есть 1 выход самый простой: берёш и отбираеш потихоньку куски схемы тоесть убереш функцию запускаеш смотриш итд если нето то жмёш Ctrl+Z и кусок вернётся который удалил либо опять же етот метод уместен для отловки вирусов так же делаеш но без открытия просто проверяеш на ВТ |
|||
карма: 2 |
|
Ответов: 4631
Рейтинг: 749
|
|||
Ну, с блоками try...except вообще может быть трудно из-за покромсаного sysutils.pas к текущим компиляторам.
|
|||
карма: 26 |
|
Ответов: 1291
Рейтинг: 47
|
|||
Rysik, именно так бы я и сделал
покромсал бы схему если бы глюк был СТАБИЛЕН. Выход должен быть. Хотя бы в виде Хиасм-специфичного хака. Ведь между компонентами и исходником есть некая прослойка - наверное кодогенератор. И вот на уровне кодогенератора наверное что-то такое можно вставить. Попробую как нить поковыряться раз главные головы молчат)) Как вариант - запуск параллельного процесса-контроллера кому компоненты сообщают о начале и успешном конце работы своего кода, вместе со своим идентификатором. И если прога упала, то контроллер выдает список компонентов которые не сообщили об успешном завершении своего дела. В принципе, этот контроллер можно в виде отдельной программы-отладчика сделать, чтоб полностью изолировать от проги. А обмен инфой - через IPC. |
|||
карма: 3 |
|
Ответов: 3851
Рейтинг: 159
|
|||
Aziz писал(а): запуск параллельного процесса-контроллера кому компоненты сообщают о начале и успешном конце работы своего кода, вместе со своим идентификатором. |
|||
карма: 0 |
|
Ответов: 1291
Рейтинг: 47
|
|||
Это первое о чем я думал.. И кстати реализовал в недавней проге на основе JanFX, только лог заменил позже реестром - там счетчик при старте формы увеличивается на 1, а после старта обнуляется. Если прога 3 раза упала то происходит полный сброс к дефолтным настройкам.
Но лог не прокатит - во первых в сложной схеме это нереально будет сделать (а глюки именно в сложных схемах как правило), точек будет немерено, поди угадай, во вторых в случае непостоянного глюка этот лог будет разбухать на гигабайты. Необходимо нечто более гибкое. |
|||
карма: 3 |
|
Ответов: 3851
Рейтинг: 159
|
|||
Aziz писал(а): точек будет немерено, поди угадайAziz писал(а): в случае непостоянного глюка этот лог будет разбухать на гигабайты |
|||
карма: 0 |
|
Ответов: 1291
Рейтинг: 47
|
|||
у меня имеются функц. блоки-контейнеры, но в каждый из них заходит и выходит до 10-20 линков, от разных частей (блоков) схемы. В каком направлении идут события в какой послед-ти - уже не очевидно. Тем более что модули тесно взаимодействуют и обмениваются инфой. На каждый линк по логу ставить мне как-то лень, особенно если:
All: 3855, sdk: 820, MultiElements: 111, Core: 575, links: 0, points: 12606 |
|||
карма: 3 |
|
Ответов: 1343
Рейтинг: 31
|
|||
а у тя идёт краш программы или Runtime ?
если краш то ничем немогу помочь а если рунтайм то есть схемка для отловки этих рунтаймов и разьяснение от чего они итд |
|||
карма: 2 |
|
Ответов: 1291
Рейтинг: 47
|
|||
Программы - нарушение доступа.
|
|||
карма: 3 |
|
Ответов: 1061
Рейтинг: 22
|
|||
Aziz писал(а): нарушение доступа.К чему? Можешь показать все ошибки которые появлялись/появляются? |
|||
карма: 0 |
|
Ответов: 1291
Рейтинг: 47
|
|||
Ошибка всегда одна - ошибка чтения, но с разным адресом:
exeption_.png Чаще всего адрес бывает вида 000001. Читал что это от обращения к уже несуществующим данным. То есть из-за потоков при закрытии проги они закрываются неодновременно что ли. И живой еще поток запрашивает данные уже "мертвого". Вся схема тактируется (синхронизируется) генератором 500 мс. Пробовал перед выходом событием onClose формы принудительно и с ожиданием завершения останавливать все потоки и таймеры - не помогло. Причем интересно что там не просто Exсeption, а двойной Exсeption Exсeption. Чтобы это значило? Не нашел ничего про двойной Exсeption. Эта прога - утилита для Форекс. Так сказать, "лопата", как я ее называю, для золотоискателей на Форекс. Как известно во времена золотой лихорадки разбогатели также и те кто продавал лопаты и др. оборудование.. Эта супер-лопата с кнопками "Купить" "Продать", и множеством других функций и удобств (например, автокопание) но как видите, глюковатая..(( |
|||
карма: 3 |
| ||
файлы: 1 | exeption_.png [22.9KB] [617] |
Ответов: 1061
Рейтинг: 22
|
|||
Aziz, что выполняет программа при закрытии?
|
|||
карма: 0 |
| ||
Голосовали: | Aziz |
Ответов: 1291
Рейтинг: 47
|
|||
Ваш вопрос меня озадачил..)) Пришлось проследить куда идут все провода после onClose..
Идет на хаб от кнопки "Stop", и как следствие вызывает ее автонажатие и следующие события: 1) Пишет в реестр команду "Stop" 2) Подает событие на воспроизведение звука "Stop" из массива звуков. 3) И еще подает событие на окончание записи горячих клавиш и установки пользовательских цветов. 4) Останавливает таймеры 5) Пишет в реестр настройку для включения щелкающего звука браузера IE обратно. Вроде все. Тут надо это пояснить что я в проге реализовал присвоение любой горячей клавиши кнопкам программы и цветов ее интерфейсу, а работает это так - пользователь входит в режим изменения цвета или хоткея, затем жмет выбранный хоткей или цвет, затем жмет ту клавишу которой он это хочет присвоить. Соответственно кнопка посылает сигнал окончания записи и свой ID. И все это сразу пишется в реестр в виде длинной строки с разделителем. Может, воспроизведение звука на выходе иногда крушит прогу? |
|||
карма: 3 |
|
Ответов: 1061
Рейтинг: 22
|
|||
Попробуй по одному эти пункты отключать!
------------ Дoбавленo в 15.38: или сначала все, если исчезнет ошибка, по одному! ) ------------ Дoбавленo в 15.39: Может быть программа закрываясь, не успевает отработать все пункты? ) |
|||
карма: 0 |
|