Никогда не сталкивался с такой необходимостью.
Этот топик читают: Гость
Ответов: 4664
Рейтинг: 767
|
|||
карма: 26 |
|
Ответов: 1309
Рейтинг: 48
|
|||
Неужели на всем форуме только я дружу с программными исключениями? Вот карма тяжелая..))
|
|||
карма: 3 |
|
Ответов: 211
Рейтинг: 52
|
|||
Aziz писал(а): т.к. не собираюсь уходить с Хиасма![]() Касательно самой идеи, то необходимо определится, кому нужна информация об ошибках и в каком виде. Кому нужна информация и какая: здесь http://www.delphimaster.ru/articles/errors/. Мне, например, в большинстве случаев хватает информации от макроса Assert (Мое сообщение, юнит, номер строки, адрес). По полученному адресу в map(Delphi) или draft(FPC) файле, можно все необходимое найти. |
|||
карма: 1 |
|
Ответов: 1309
Рейтинг: 48
|
|||
Minkovsky, thx! Надо будет ознакомиться с вашим методом. Отличная статья, оказывается она у меня уже есть в закладках Оперы..
------------ Дoбавленo в 18.56: Но если по делу, куда мне сейчас вставлять этот макрос? Ведь ошибка бродит неизвестно где. Поэтому и пытался весь этот огород с кодогенератором осилить. |
|||
карма: 3 |
|
Ответов: 211
Рейтинг: 52
|
|||
Aziz, ЛС посмотри
|
|||
карма: 1 |
|
Ответов: 1309
Рейтинг: 48
|
|||
Minkovsky, ответил..
|
|||
карма: 3 |
|
Ответов: 1309
Рейтинг: 48
|
|||
Вот, сделал универсальный отладчик контейнеров, панелей и форм - всех с приставкой Ex. Показывает последовательность их запуска и остановки. Но как назло, мой глюк исчез и упорно не появляется чтоб испытать.)) Всегда так...
Да, забыл, еще в список отслеживаемых имен впишите last - по этому имени находится лог последнего запущенногоостановленного модуля. Может кто знает как пофиксить ошибку отладчик если он долго работает выдает Map View Of file failed - ошибка чтения расшаренного файла. Так что отладчик тоже надо отладить. Для этого можно написать еще один отладчик и т.д.)) |
|||
карма: 3 |
|
Ответов: 1309
Рейтинг: 48
|
|||
Ура, глюк закрытия локализован с точностью до контейнера!
![]() 1 debug_end_Terminated -- (debug_end) 2 MT4docker_f_Terminated -- (MT4docker_f) 3 command_c_Started -- (command_c) 4 terminfo_c_Terminated -- (terminfo_c) 5 dynbroker_c_Terminated -- (dynbroker_c) 6 mt4counter_c_Terminated -- (mt4counter_c) 7 layout_c_Terminated -- (layout_c) 8 display_p_Terminated -- (display_p) 9 autoupdate_c_Terminated -- (autoupdate_c) 10 runningstr_c_Terminated -- (runningstr_c) 11 ledtext_c_Terminated -- (ledtext_c) 12 registry_c_Terminated -- (registry_c) 13 getsymblist_c_Terminated -- (getsymblist_c) 14 indicator2_p_Terminated -- (indicator2_p) 15 settings_p_Terminated -- (settings_p) 16 main_p_Terminated -- (main_p) 17 sizecolor_c_Terminated -- (sizecolor_c) 18 utc_c_Terminated -- (utc_c) 19 indicator1_p_Terminated -- (last) Видно что 3 сверху контейнер (3 command_c_Started) не дошел до закрытия. В том контейнере много элементов реестра, и еще что-то. Теперь надо тот контейнер разбить на именованные подконтейнеры, можно тупо вплоть до одного контейнера на элемент, и вуаля, баг пойман. |
|||
карма: 3 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Aziz, мне допустим как админу удобней журнал с ошибками через консоль смотреть, так может стоит в сторону апи глянуть
![]() типа это http://www.rsdn.ru/article/baseserv/eventlog.xml или это http://www.codenet.ru/progr/delphi/stat/Event-Log.php это так скажем "взять на заметку" ![]() [flood]раньше может и сделал сам но вряд-ли в HiAsm уже что-то буду делать[/flood] |
|||
карма: 4 |
|
Ответов: 1309
Рейтинг: 48
|
|||
Обновление:
21.9.2013 Added: Наблюдение за активностью контейнеров, отлов "замороженных" частей схемы. Fixed: Ошибка MapViewOfFile failed при постоянном мониторинге (там накапливалось 31736 отображений файла что вызывало ошибку, в связи с этим перекачайте мой компонент sharedvar, там была та же ошибка) Схема работы такая: 0) Делаем резервную копию схемы. 1) Даем имена подозреваемым на баг контейнерам путем установки их ID в свойствах; 2) Вставляем 2 пустых контейнера серии Ex и устанавливаем у первого его ID равный debug_start и помещаем его на задний план, у второго ID равный debug_end и помещаем его на передний план (при вставке новых элементов не забывать заново устанавливать его передний план), выделяем мышью оба контейнера и в свойстве Debug пишем 1; 3) Если надо отследить активностьзависание - подключаем к его точке SetActivityLabel какой-нить генератор меняющихся во времени меток, например счетчик; 4) Вставляем список имен контейнеров в отладчик и запускаем его. 5) Найдя нестартовавшийнезавершившийся или зависший контейнер, помещаем схему внутри него в новые контейнеры - до тех пор пока не поймем где собака была закопана.) 6) Делаем изменения в резервной копии схемы. |
|||
карма: 3 |
|
Ответов: 1309
Рейтинг: 48
|
|||
Вроде нашел причину глюка, но хочу еще недельку погонять прогу чтобы убедиться. Локализовал проблемный контейнер, затем продолжил "аппроксимацию" путем заключения однотипных элементов в контейнеры. "Виноватым" оказались 10-15 элементов BlockFind в цепочке ищущие командные блоки. Видимо после закрытия программы они продолжали иногда что-то искать. Сделал фильтр - триггер срабатывающий при onClose формы и не пропускающий поток на вход BlockFind если прога закрывается. Пока Глюк не вернулся еще..
Вои интересные статьи про отладку: http://www.gunsmoker.ru/2009/05/access-violation.html http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=1392#SubSubHeader_1_3_1 http://www.transl-gunsmoker.ru/2009/09/blog-post.html |
|||
карма: 3 |
|
Ответов: 1309
Рейтинг: 48
|
|||
Глюк вернулся! (а он наверное и не уходил никуда
![]() ------------ Дoбавленo в 16.37: Значит это не статичный, логический глюк, а динамический, зависящий от сочетания входных данных. |
|||
карма: 3 |
|
57