Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> блокировка сообщения системы (перенаправление выво 
:(
    Опции темы
Kim
Дата 27.10.2005, 18:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Хунтер, и если не секрет (сори за оффтоп) - как переводится фраза-подпись с латыни? ;)
  Вверх
_hunter
Дата 27.10.2005, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



Цитата
Нет, здесь логика работы очень жесткая: превысил ПП лимит времени (т.е. сработал WaitForSingleObject один раз), или вызван эксепшн (т.е. сработал WaitForDebugEvent один раз), или превышен лимит памяти - проект сразу должен быть завален...

ну тогда точно монитор запустить и самому валить...

Цитата
И еще... WaitForSingleObject мне и нужен-то был для установления лимита времени. По идее то же самое умеет и WaitForDebugEvent

не совсем то же: если WaitForSingleObject сработает по истечению времени -- это будет говорить о том, что процес еще живет, а если WaitForDebugEvent -- только о том, что отладочных сообщений не было ( как сообщений о завершении процесса так и сообщений об ошибках ) поэтому заменять нельзя.

Цитата
Хунтер, и если не секрет (сори за оффтоп) - как переводится фраза-подпись с латыни? ;)

не сикрет smile
"Времена меняются, и мы меняемся вместе с ними"


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Kim
Дата 27.10.2005, 20:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(_hunter @ 27.10.2005, 18:37)
не совсем то же: если WaitForSingleObject сработает по истечению времени -- это будет говорить о том, что процес еще живет, а если WaitForDebugEvent -- только о том, что отладочных сообщений не было ( как сообщений о завершении процесса так и сообщений об ошибках )

именно поэтому можно smile
Мой проект должен именно это и отслеживать: один раз выделить (условно) 5 сек на то, чтобы ПП завернулся. Причем тихо-мирно, без ошибок и воплей. А если он не успеет - то я его сам заворачиваю ;) Ведь WaitForDebugEvent не будет ждать все 5 секунд, если ПП завершится раньше, правильно? smile
Получается 3 варианта развития событий:
1. ПП работает время меньше 5 сек и завершается корректно. Все ок.
2. ПП хочет работать больше 5 сек. По истечении таймлимита я его заворачиваю. Сообщение об ошибке генерит мой проект в свой лог.
3. ПП вылетает с эксепшином раньше 5 сек... Сообщение об ошибке генерит мой проект в свой лог.
вот и все...

А насчет памяти... отслежка раз в период - не очень хорошо по двум причинам:
1. ПП может выделить большой объем памяти "на раз" и быстренько его освободить, а я этого не замечу. А заметить надо.
2. Если сильно уменьшу интервал проверки - то мой проект будет кушать много ресурсов. А по задумке как можно больше ресурсов компа должно отдаваться ПП...
как быть?
  Вверх
Петрович
Дата 27.10.2005, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 15
Всего: 55



Цитата(Kim @ 27.10.2005, 21:09)
. ПП может выделить большой объем памяти "на раз" и быстренько его освободить, а я этого не замечу. А заметить надо.

А может тогда стоит перехватить функции распределения памяти и контролировать сам процесс распределения?


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
_hunter
Дата 28.10.2005, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



для контроля достаточно просто знать выделяла ли программа больше память чем нужно. а для этого можно это:
http://msdn.microsoft.com/library/default...._monitoring.asp
использовать...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Kim
Дата 28.10.2005, 17:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Хунтер, немного промазал:
http://msdn.microsoft.com/library/en-us/pe...information.asp
http://msdn.microsoft.com/library/en-us/pe...r_a_process.asp

;)

правда какой из них - не знаю еще, не втыкал конкретно...
  Вверх
Kim
Дата 29.10.2005, 11:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
Дата 29.10.2005, 12:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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

Получается, их можно отследить только по коду возврата?.. smile


  Вверх
_hunter
Дата 31.10.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 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...
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0470 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.