Деструктор глобального объекта
От: Homunculus Россия  
Дата: 22.12.20 08:09
Оценка:
Нужно отловить по логам креш программы. В качестве логгинга придумал велосипед, не знаю настолько он корректен

Есть глобальный объект логгера, пишущий в файл. В констукторе логгера я проверяю есть ли уже файл лога и если он есть, то предполагаю, что в предыдущий раз программа законилась с падением и предлагаю отправить лог разработчику. В деструкторе логгера я соответственно файл лога закрываю и удаляю

Расчет на то, что в случае падения деструктор логгера не вызовется и файл не удалится — то етсь лог останется и при следующем запуске мы предложим его отправить

Насколько такой подход корректен? Какие подводные камни? Если это кривой подход — как нужно сделать правильно?
Re: Деструктор глобального объекта
От: kov_serg Россия  
Дата: 22.12.20 08:13
Оценка:
Здравствуйте, Homunculus, Вы писали:

H>как нужно сделать правильно?

Правильно запустить еще один процесс который будет ждать пока не упадёт подопечный и уже он за ним всё убирает и отправляет останки на экспертизу.
Re[2]: Деструктор глобального объекта
От: Homunculus Россия  
Дата: 22.12.20 08:14
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Правильно запустить еще один процесс


Неа, не правильно. На iOS это невозможно
Re: Деструктор глобального объекта
От: hepper  
Дата: 22.12.20 08:14
Оценка: 6 (1) +1
Здравствуйте, Homunculus, Вы писали:

H>Нужно отловить по логам креш программы. В качестве логгинга придумал велосипед, не знаю настолько он корректен


H>Есть глобальный объект логгера, пишущий в файл. В констукторе логгера я проверяю есть ли уже файл лога и если он есть, то предполагаю, что в предыдущий раз программа законилась с падением и предлагаю отправить лог разработчику. В деструкторе логгера я соответственно файл лога закрываю и удаляю


H>Расчет на то, что в случае падения деструктор логгера не вызовется и файл не удалится — то етсь лог останется и при следующем запуске мы предложим его отправить


H>Насколько такой подход корректен? Какие подводные камни? Если это кривой подход — как нужно сделать правильно?



Пиши в лог последнюю запись, о том что прога отработала нормально. При запуске — проверяй это — если запись о нормальном завершении есть — удаляй лог и начинай снова. Иначе — предлагай отправить.
Re[2]: Деструктор глобального объекта
От: Homunculus Россия  
Дата: 22.12.20 08:15
Оценка:
Здравствуйте, hepper, Вы писали:


H>Пиши в лог последнюю запись, о том что прога отработала нормально. При запуске — проверяй это — если запись о нормальном завершении есть — удаляй лог и начинай снова. Иначе — предлагай отправить.


О, блин. Точно. Вариант. Не додумался.
Re: Деструктор глобального объекта
От: Homunculus Россия  
Дата: 22.12.20 09:15
Оценка:
Здравствуйте, Homunculus, Вы писали:

Отбой.
Оказывается для таких случаев есть функция NSSetUncaughtExceptionHandler
Вопрос закрыт
Re: Деструктор глобального объекта
От: Mr.Delphist  
Дата: 22.12.20 09:42
Оценка:
Здравствуйте, Homunculus, Вы писали:

H>Нужно отловить по логам креш программы. В качестве логгинга придумал велосипед, не знаю настолько он корректен


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