![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Kim |
|
|||
|
Unregistered |
Хунтер, и если не секрет (сори за оффтоп) - как переводится фраза-подпись с латыни? ;)
|
|||
|
||||
| _hunter |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 9 Всего: 98 |
ну тогда точно монитор запустить и самому валить...
не совсем то же: если WaitForSingleObject сработает по истечению времени -- это будет говорить о том, что процес еще живет, а если WaitForDebugEvent -- только о том, что отладочных сообщений не было ( как сообщений о завершении процесса так и сообщений об ошибках ) поэтому заменять нельзя.
не сикрет "Времена меняются, и мы меняемся вместе с ними" -------------------- Tempora mutantur, et nos mutamur in illis... |
||||||
|
|||||||
| Kim |
|
|||
|
Unregistered |
именно поэтому можно Мой проект должен именно это и отслеживать: один раз выделить (условно) 5 сек на то, чтобы ПП завернулся. Причем тихо-мирно, без ошибок и воплей. А если он не успеет - то я его сам заворачиваю ;) Ведь WaitForDebugEvent не будет ждать все 5 секунд, если ПП завершится раньше, правильно? Получается 3 варианта развития событий: 1. ПП работает время меньше 5 сек и завершается корректно. Все ок. 2. ПП хочет работать больше 5 сек. По истечении таймлимита я его заворачиваю. Сообщение об ошибке генерит мой проект в свой лог. 3. ПП вылетает с эксепшином раньше 5 сек... Сообщение об ошибке генерит мой проект в свой лог. вот и все... А насчет памяти... отслежка раз в период - не очень хорошо по двум причинам: 1. ПП может выделить большой объем памяти "на раз" и быстренько его освободить, а я этого не замечу. А заметить надо. 2. Если сильно уменьшу интервал проверки - то мой проект будет кушать много ресурсов. А по задумке как можно больше ресурсов компа должно отдаваться ПП... как быть? |
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 15 Всего: 55 |
А может тогда стоит перехватить функции распределения памяти и контролировать сам процесс распределения? -------------------- Все знать невозможно, но хочется |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 9 Всего: 98 |
для контроля достаточно просто знать выделяла ли программа больше память чем нужно. а для этого можно это:
http://msdn.microsoft.com/library/default...._monitoring.asp использовать... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Kim |
|
|||
|
Unregistered |
Хунтер, немного промазал:
http://msdn.microsoft.com/library/en-us/pe...information.asp http://msdn.microsoft.com/library/en-us/pe...r_a_process.asp ;) правда какой из них - не знаю еще, не втыкал конкретно... |
|||
|
||||
| Kim |
|
|||
|
Unregistered |
hunter: можешь еще вот это объяснить?
Юзаю WaitForDebugEvent. В результате наблюдаю такую картинку... При запуске 32битного приложения (работающего корректно!) получаю такую очередь эвентов: -ProcessCreate- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -=!EXCEPTION!=- -ProcessExit- Код возврата: 0 При запуске 32битного приложения (вызывающего деление на 0) - такая очередь: -ProcessCreate- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!= ... и так до бесконечности При запуске 16битного приложения (работающего корректно!) - такая очередь: -ProcessCreate- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -=!EXCEPTION!=- -ThreadCreate- -LoadDLL- -LoadDLL- -OutputSTR- -LoadDLL- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -ThreadCreate- -=!EXCEPTION!=- -ThreadExit- -ThreadExit- -ProcessExit- Код возврата: 0 При запуске 16битного приложения (вызывающего деление на 0) - такая очередь: -ProcessCreate- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -=!EXCEPTION!=- -ThreadCreate- -LoadDLL- -LoadDLL- -OutputSTR- -LoadDLL- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -=!EXCEPTION!=- -ThreadCreate- -ThreadExit- -ThreadExit- -ProcessExit- Код возврата: 200 Так как же мне грамотно определить, в каком случае запускаемый процесс отваливается, а в каком - нормально работает?.. |
|||
|
||||
| Kim |
|
|||
|
Unregistered |
Предыдущий вопрос снят... по 32битникам все понятно: надо было более подробно рассматривать эксепшины. Возник другой вопрос: сколько вообще этих эксепшинов бывает? Микрософт публикует всего 5, борланд в своем хелпе - 20. В сумме (разных) получается 21. Где еще можно поискать?
А вот по 16 битникам.... Правильная прога: -ProcessCreate- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- =!ExBreakpoint!= -ThreadCreate- -LoadDLL- -LoadDLL- -OutputSTR- -LoadDLL- -ThreadCreate- -ThreadExit- -ThreadExit- -ProcessExit- Код возврата: 0 Неправильная прога: -ProcessCreate- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- -LoadDLL- =!ExBreakpoint!= -ThreadCreate- -LoadDLL- -LoadDLL- -OutputSTR- -LoadDLL- -ThreadCreate- -ThreadExit- -ThreadExit- -ProcessExit- Код возврата: 200 Получается, их можно отследить только по коду возврата?.. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 9 Всего: 98 |
так 20 их и есть:
http://msdn.microsoft.com/library/default...._record_str.asp а остальные ( всякие наследники от Exception ) -- языкозависимы... а с 16-ти битными -- хз ( я их только в школе писал... ) а зачем, кстати, в 16 бит компилировать ( особенно в делфи )? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |