![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FreeLibrary [D7, WinXP]
stone © (2005-10-13 10:41:00)При выполнении FreeLibrary при закрытии программы процесс "зависает". Куда копать?
evvcom (2005-10-13 16:31:00) [1]проглотил утюг холодный... :)
Digitman (2005-10-13 12:26:00) [2]
> stone © (13.10.05 12:15) [11]
Короче, резюме как всегда - "Торопыжка был голодный.."(С) ..)
stone (2005-10-13 12:15:00) [3]Библиотека получала данные с вэб-сервера и обрабатывала их и отправляла приложению. При выгрузке, как оказалось, процесс не зависал, а ожидал завершения других процессов, связанных с удаленным доступом. Иногда ожидание доходило до 30 сек. поэтому казалось что зависает.
Digitman (2005-10-13 11:50:00) [4]
> В общем уже не важно. Проблему решил
не удовлетворишь ли любопытство публики : где ж она была, направо или налево ?) и как решил ? .. может кому-то впоследствии твой опыт пригодится ..
stone (2005-10-13 11:44:00) [5]
> Digitman © (13.10.05 11:24) [7]
Это я все делал. В общем уже не важно. Проблему решил.
Digitman (2005-10-13 11:24:00) [6]
> Смотрел в окне CPU
зачем CPU-то ? когда есть исх.тексты библиотеки ?
ты с принципами пошаговой трассировки кода своей библиотеки средствами встр.отладчика вообще знаком ?
открываешь свой библ.проект, собираешь его со всеми опциями отладки,
ставишь брейкпойнты на нужные строки в тексте библиотечного проекта (в дан.случае - в начале кода финализации библиотеки при ее выгрузке), в меню Run -> Parameters указываешь хост-приложение (то которое обращается в ходе работы к твоей библиотеке) и шмешь F9 ... как только хост-приложение вызовет FreeLibrary, произойдет останов на брейкпойнте, после чего ты обычным образом пошагово сможешь пройтись по коду финализации и посмотреть, что там у тебя не так ..
Reindeer Moss Eater (2005-10-13 11:24:00) [7]У тебя ошибка в программе.
В 17-ой с половиной строке.
stone (2005-10-13 11:14:00) [8]о самим разработанной
В ней, при вызове создается модуль данных, перед выгрузкой выполняется процедура в библиотеке уничтожающая этот модуль, после этого в приложении вызывается FreeLibrary и на этом процесс виснет. Смотрел в окне CPU. В определенном месте получается бесконечный цикл.
Гаврила (2005-10-13 11:09:00) [9]у тебя часом не 2005?
Я тут подметил, что при запуске под отладчиком из 2005 иногда (особенно после начала финализации) при возникновении исключения (например AV) программа вместо того, чтобы ругнуться, зависает.
При запуске не из под IDE все нормально
проверь
Digitman (2005-10-13 11:05:00) [10]
> Там это где?
"там" - это в самой IDE.
> ассемблер я не знаю
а я, заметь, не знаю, о какой ДЛЛ ты речь ведешь - то ли о тобой самим разработанной, толи о чужой
stone (2005-10-13 11:02:00) [11]Дельные советы. Особенно [1]
> Digitman © (13.10.05 10:55) [2]
Там это где? Если ты про окно СPU, то это мне мало поможет, ассемблер я не знаю.
Digitman (2005-10-13 10:55:00) [12]или вправо - там встроенный в Делфи отладчик найдешь, который и прояснит причину
Reindeer Moss Eater (2005-10-13 10:50:00) [13]Копай влево.