Генерируют ли утверждения и необработанные исключения отчет о сбое?

Будут ли ошибочные операторы assert генерировать отчеты о сбоях (с трассировкой стека), которые будут проходить через iTunes Connect?

Я хотел бы знать то же самое для NSAssert, а также для неперехваченных исключений C++/Obj-C.

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

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


person Emile Cormier    schedule 19.10.2011    source источник


Ответы (2)


Да, неперехваченные исключения будут генерировать отчет о сбоях — я смотрю на один из отчетов о сбоях iTunes Connect прямо сейчас! По сути, почти все, что вызывает сбой вашего приложения и сохранение журналов, будет отправлять отчеты обратно в Apple.

Тем не менее, если вас это беспокоит, вы можете реализовать собственный обработчик отчетов о сбоях, потому что а) только пользователи, решившие поделиться диагностической информацией с Apple, будут отправлять отчеты о сбоях обратно в iTunes Connct. и б) нет никакой гарантии, что даже в этом случае отчет о сбое вернется к вам для проверки.

Вы можете сделать это самостоятельно, используя неперехваченные обработчики исключений, с помощью существующего пакета аналитики (Flurry поддерживает это) или использовать библиотеку с открытым исходным кодом разного качества (вот тот, который я нашел в Интернете — я применяю свой собственный код для своих отчетов, поэтому ваш пробег может отличаться!)

person lxt    schedule 19.10.2011
comment
Я экспериментировал с исключениями assert и C++/Obj-C и просматривал журналы устройств в XCode Organizer. Я могу подтвердить, что все они действительно генерируют трассировку стека, которая позволяет точно определить источник сбоя. Однако типы исключений и сообщения не регистрируются. - person Emile Cormier; 20.10.2011
comment
У меня может не быть времени реализовать или использовать обработчик сбоя. Но приятно знать, что я могу, по крайней мере, получать отчеты о сбоях iTunes Connect для всех типов необработанных исключений без каких-либо дополнительных усилий по программированию с моей стороны. - person Emile Cormier; 20.10.2011

Xcode по умолчанию отключает макросы NSAssert() для выпускных сборок, если вы используете один из стандартных шаблонов Xcode. Кроме того, вы можете отключить их самостоятельно, добавив флаг NS_BLOCK_ASSERTIONS к другим флагам C++ в настройках сборки.

person memmons    schedule 19.10.2011
comment
Хорошо знать. Мне пришлось отредактировать конфигурацию сборки режима выпуска, чтобы утверждения не отключались. - person Emile Cormier; 20.10.2011