![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А можно весь код проги в try - except запихнуть? [D6, D7, Win95/98, WinXP]
Lin7 © (2004-07-22 18:53:00)Ситуация:
Сделал програмку (несколько форм + пара dll + глобальный хук на грызуна). На моём компе ошибки не выскакивают и прога прекрасно работает. На других вылазят редко, но метко - прога иногда даже падает. Выловить ошибки не могу, т.к. у меня они не появляются. Утечки ресурсов MemProof не находит.
Решение:
Сделать debug'овую версию, в которой будет вестись лог-файл работы проги и попробовать выловить баг так.
Вопросы:
1. Можно ли организовать try - except таким образом, чтобы ВСЕ возникающие исключения сначала обрабатывались этим блоком? - т.е. на except навесить запись в лог-файл.
2. Если кто-то сталкивался (ну наверняка сталкивались!!!) с такой проблемой - поделитесь опытом, как лучше поступить.
Есть ли какие-то особенности в организации/ведении такого лог-файла?
Пасибочки всем. :)
Lin7 (2004-07-23 10:37:00) [1]Ошибка выскакивает (судя по отзывам) в основном при выходе из проги. Думаю хук снимается корректно - с хуками давно работаю.
Использую D7 для компиляции EXE и D6 для Dll.
>>VMcL © (22.07.04 22:19) [5]
>>...если для передачи данных в EXE используется SendMessage()...
Из хука инфо заносится в реестр (редко) и в расшаренную область памяти. Exe'шник об этом извещается действительно с помощью SendMessage.
VMcL (2004-07-22 22:20:00) [2]...передачи данных вEXE...
VMcL (2004-07-22 22:19:00) [3]>>Mim1 © (22.07.04 20:31) [2]
Если стоит глобальный хук на клавиатуру/мышь, то отладка средствами Delphi IDE может превратиться в сущее наказание - происходит взаимоблокировка, если для передачи данных EXE используется SendMessage(), к примеру. Пришлось вести лог или с помощью $IFDEF временно отключать хук перед точкой останова.
Думкин (2004-07-22 20:38:00) [4]> А можно весь код проги в try - except запихнуть?
Можно.
Только Дельфи обидится.
Насчет лога - мысль здравая, если иные способы обнаружения багов(заметьте ваших багов) отсутствуют.
Я их организовывал тупым TStringList и опциями компилятора. Почему так глупо? Потому как наказние самому себе - пиши правильно.
Удачи. Надеюсь у вас все будет хорошо.
jack128 (2004-07-22 20:35:00) [5]
> Если программа не работает я выполняю ее полностью пошагово.
это как? "полностью" пройти программу VCL весьма проблематично..
<off>
перерегистрируйся
</off>
Mim1 (2004-07-22 20:31:00) [6]Я с таким сталкиваюсь постоянно. Если программа не работает я выполняю ее полностью пошагово.
Суслик (2004-07-22 18:55:00) [7]Все, в том числе и обработанные? Тогда не знаю.
А почити все можно обработать через ивент onexceptoin
у applications