Вы отправили, подтверждения отключены, вы получаете редкий отчет о сбое, указывающий, что в вашем коде произошло нарушение нулевого указателя. В среде разработки проблема была бы поймана утверждением.
Все, что у вас есть, - это отчет о сбое, поэтому воспроизвести проблему практически невозможно. Отслеживание следа не дает никаких подсказок о том, почему авария произошла в первую очередь.
Параметры: - Добавить проверку указателя, чтобы предотвратить сбой. Это предотвратит сбой, но вы, вероятно, даже не узнаете, почему это произошло. - пусть летит, надеюсь, что это случится снова со сценарием репро
Допустим, приложение не предназначено для управляемой ракеты или системы автоматического торможения ...
Что бы вы выбрали?
Ответы:
Я выбрал второй подход. Нет смысла скрывать сбой, если указатель NULL был неожиданным в том месте, где произошел сбой. Указатель NULL в большинстве случаев будет просто признаком того, что что-то не так. Если мы скрываем это с помощью проверки NULL-указателя, то почти наверняка что-то еще сломается. Я чувствую, что у вас больше шансов поймать сценарий, если вы знаете точку, где он падает каждый раз вместо какого-то случайного места.
источник
Как часто происходит сбой? Это происходит только для одного из многих клиентов в каком-то непонятном случае? Каковы последствия (потеря данных, сбой системы)? Если это происходит каждые 1 на миллион случаев, и им просто нужно перезапустить приложение, и данные не будут потеряны, то, вероятно, вам не нужно это исправлять - оставьте это так.
Насколько дорого (деньги и время) добавить утверждения и отправить их всем клиентам (если только часть клиентов получит новую версию, то у остальных может возникнуть проблема с непроверенным нулем)? Каковы шансы найти проблему? Если вы просто ставите случайные проверки в коде, надеясь уловить ошибку, это плохая практика ...
Может ли проблема быть воспроизведена на машине клиента? Можете ли вы получить доступ к этой машине? Это может быть очень ценным
Просмотрите отчеты о сбоях и убедитесь, что предоставленная информация полезна и может помочь вам диагностировать проблему
источник
В определенном порядке это было бы перехвачено и исправлено, но текущий обратный след никогда не перехватывался.
Вы должны увидеть, что пошло не так с аварийным дампом, проверили ли вы параметры и т.д ...?
Дополнительные возможности, которые могут быть сделаны в зависимости от количества времени, которое вы хотите вложить в это:
Архивировать аварийный дамп и ссылаться на него в коде с комментарием в строке, в которой произошел сбой,
это позволяет тому, кто исследует очень похожий аварийный дамп, узнать, что это произошло раньше ...
[время потрачено: коротко]
Дополнительные проверки, регистрация, ... Вы хотите предотвратить это и получить больше информации в следующий раз.
[потраченное время: среднее]
Убедитесь, что невозможно вызвать приложение таким образом, чтобы произошло это нарушение.
[потраченное время: долго]
источник
В эти дни я отправляю с включенным assert (). Это не стоит больших затрат и может значительно облегчить жизнь в неблагоприятных ситуациях (т. Е. Среда вашего клиента часто более враждебна, чем среда разработки или контроля качества).
источник