На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> логирование неожиданного завершения приложения
    Написано приложение. обработка ошибок в нем реализована так: try except end
    но все же по необъяснимым причинам приложение неожиданно без сообщений закрывается. в случайное время. через дня три. может через месяц.
    там где софт установлен - агрессивная среда. всякие левые программы некоторые ставят. разные антивирусы о которых я и не слышал.
    не исключено что чужое приложение закрывает мое. мне бы хотелось сделать какое то логирование происходящего что бы разобраться - что стало причиной закрытия приложения без ошибки.
    хотелось бы сузить круг поиска ошибки. повысить стабильность и т.п.
    пожалуйста расскажите как сделать правильный лог ошибок
    спасибо
      получается - основная задача - узнать кто завершил мой процесс. разумеется наверное как то другим процессом надо это отслеживания. после заврешения основного процесса, уже ничего не сделаешь.
      например касперский пишет в логах попытка доступа к PID
      что то в этом духе
      мне бы тоже узнать кто последний вмешивался в работу моей программы.
      но это только получается пол беды.

      вторая часть это наверное корректная обработка всех критических событий. например я работал со звуком и кто то остановит аудио сервис или еще какой сервис нужный мне.
      наверное нужно работать с Getlasterror?
      Сообщение отредактировано: Emmys -
        отловить причину почему процесс падает можно или из под отладки или отловить момент падения из самой программы.
        для этого в винде есть много плюшек.
        самое интересное из этого списка SetUnhandledExceptionFilter.
        реализованный пример с этой функцией есть в jedi компонентах (с дополнительной плюшкой "с раскруткой" стека)

        пс. так же посмотри на функцию AddVectoredExceptionHandler. она позволит тебе отлавливать все tryExcept (для статистики например ))) )
          Не получится узнать, кто прибивает прогу.
          Если она именно падает, обычно сообщение об этом остается в системном логе
            Fr0sT, в системном логе информация осталась. действительно это просто крах

            Добавлено
            Fr0sT, есть еще вопрос. схожий.
            как можно сделать следующее:

            try
            случилась ошибка тут
            except
            обработал ошибку
            end;


            я хочу что бы в Appliction.OnException или где то еще в какой то одной глобальной функцией на весь мой проект - я тоже получил детали ошибки. но и блок except end тоже отработал при этом.
              Например, так
              ExpandedWrap disabled
                try
                случилась ошибка тут
                except
                обработал ошибку
                App.OnException( EGlobalExc.Create())
                end;
                 
                App.OnException:
                if E is EGlobalExc then ...


              Можно и raise, но тогда все дальнейшее выполнение будет прервано, разумеется. Надо смотреть, какая цель. Если просто хочется логировать все исключения и продолжать работу, то такой вариант.
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0291 ]   [ 15 queries used ]   [ Generated: 18.05.24, 13:27 GMT ]