Вылетает приложение что делать: Вылетают приложения на Андроид: как исправить

Содержание

Вылетают приложения на Андроид: как исправить

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

Исправление вылета приложений на Android

Существует весьма большое количество глобальных ошибок на Android, возникновение которых напрямую связано с вылетами и некоторыми другими трудностями. В то же время вылет программы может происходить по индивидуальным причинам, требующим соответствующего решения. Мы постараемся уделить внимание большинству вариантов, но из-за особенностей каждого ПО нельзя гарантировать успешное избавление от трудностей.

Читайте также: Устранение проблемы «В приложении произошла ошибка» на Android

Способ 1: Приложения Google

Основными приложениями на Android выступают различные процессы и службы Google, зачастую установленные на смартфоне по умолчанию. В число сопутствующих неполадок входит ошибка

«Приложение Google остановлено», вызванная соответствующим ПО. Про поиск ее причин мы рассказали в инструкции по следующей ссылке.

Подробнее: Устранение проблемы «Приложение Google остановлено» на Android

Аналогичным образом нередко может возникать сообщение об экстренной остановке Google Play Маркета. На такой случай нами также подготовлены статьи с несколькими вариантами решения проблемы. При этом большинство решений являются универсальными и будут нами упомянуты далее.

Подробнее:
Неправильная работа Google Play Маркета
Устранение сообщения «Приложение Сервисы Google Play остановлено»
Ошибки в работе Сервисов Google Play

Некоторые из возможных проблем могли быть нами пропущены. Чтобы наверняка избавиться от вылетов, полностью ознакомьтесь с данной статьей.

Способ 2: Стандартные приложения

Как и в случае с Google, на Android-устройствах могут присутствовать проблемы с вылетами стандартного ПО. Среди подобного наиболее важными являются

«Настройки», исправление ошибок в которых было нами описано отдельно. Большая часть рекомендаций также полностью применима и в других ситуациях.

Подробнее: Устранение проблем в работе приложения «Настройки» на Android

Способ 3: Очистка кэша

Самым универсальным решением неполадки с вылетом приложений является очистка кэша, помогающая избавиться от ошибки в большинстве случаев. Для этого потребуется воспользоваться стандартными «Настройками», выбрав нужное ПО из полного списка и воспользовавшись кнопкой «Очистить кэш». Вместо этого можно прибегнуть и к сторонним решениям вроде CCleaner, автоматизирующим и упрощающим этот процесс. В целом процедура требует минимум действий и была нами описана ранее.

Подробнее: Как очистить кэш на телефоне

Способ 4: Переустановка приложений

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

Подробнее: Удаление обычных приложений и неудаляемых приложений на Android

Если вылеты связаны со стандартными службами и сервисами, удаление все равно способно помочь. Однако в таком случае необходимо будет воспользоваться компьютером.

Подробнее: Удаление сервисов Google Play и Плей Маркета

Способ 5: Работа с обновлениями

В качестве вспомогательного варианта исправить проблемы с вылетами можно путем установки свежих обновлений для приложений. Об этом нами было рассказано в статье по ниже представленной ссылке. При этом в качестве решения может точно так же выступать удаление обновлений.

Подробнее: Установка и удаление обновлений для ПО на Android

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

Подробнее: Как обновить версию Android на телефоне

Способ 6: Проверка на заражение вирусами

Для Андроид существует ряд вредоносного ПО, вполне способного заразить устройство и привести к некорректной работе как операционной системы и стандартных компонентов, так и отдельно взятых приложений. Чтобы избавиться от данной неприятности, можно воспользоваться специальными средствами, уже рассмотренными нами. При этом в случае обнаружения и удаления зараженных файлов иногда требуется очистка кэша или даже переустановка ПО, о чем мы уже рассказывали выше.

Подробнее: Способы поиска вирусов на Android

Способ 7: Поиск проблем с производительностью

Из всех существующих неполадок, влияющих на вылет приложений, менее очевидной является несоответствие телефона системным требованиям. Зависит подобное от того, что большинству приложений недостаточно наличия совместимой версии Android, а требуются и другие, достаточно производительные, компоненты. Более подробно эту тему мы рассмотрели в соответствующей инструкции.

Подробнее: Устранение проблем с производительностью смартфона и планшета на Android

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

Подробнее: Увеличение внутренней и оперативной памяти на Android

Способ 8: Сброс настроек до заводского состояния

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

Подробнее: Сброс настроек на Android-устройстве

Способ 9: Поиск повреждений смартфона

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

Читайте также: Устранение проблем со звуком и с быстрой разрядкой на Android

Заключение

В качестве завершения стоит упомянуть вероятность неправильной работы конкретных приложений вне зависимости от устройства и версии ОС. Именно поэтому не забывайте читать комментарии под приложениями в Google Play Маркете, чтобы наверняка исключить или подтвердить данный вариант.

Мы рады, что смогли помочь Вам в решении проблемы.

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТ

Решено: вылетают приложения на Android

Неприятная ситуация: пользователь активно работает в окне приложения, как вдруг оно вылетает, не сохранив внесенные изменения. Такое чаще всего происходит с браузерами, соцсетями и играми – в последнем случае особенно обидно. Спешить с досадой удалять программу не стоит, вполне реально разобраться самому, почему вылетают приложения на Android.

Причины аварийного закрытия приложений

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

Если скачивать утилиту со сторонних источников, могут возникнуть следующие проблемы:

  • Несовместимость версии утилиты с версией операционной системы: при скачивании приложений с официального магазина такое возникает крайне редко.
  • Поврежденный установочный apk-файл проведет некорректную инсталляцию.
  • Вирусы, которые можно подцепить при скачивании программ со сторонних ресурсов, легко вносят изменения в работу приложений.

При правильной установке с PlayMarket все равно вылетает браузер на Андроиде – нужно почистить кэш или оперативную память.

Если разработчики пренебрегли вопросом совместимости с непопулярными версиям Андроида, появляется неприятная надпись «Не совместимо с вашим устройством».

Важно! Некоторые «тяжелые» игры регулярно выпускают дополнения, при распаковке и скачивании кэша нужно указать папку. Если пренебречь этим выбором, в памяти устройства моет возникнуть путаница. Это приведет к вылету игры в самые неподходящий момент – лучше перестраховаться.

Читайте также: Ошибка разбора пакета Android

Решение проблемы

Актуальными версиями Андроида сейчас можно назвать 7 и выше, если в них вылетают приложения, можно попробовать следующие методы решения:

  • Перезагрузка смартфона. Это освободит оперативную память, нагрузка на процессоры уменьшится. Если это действие помогло, но временно, нужно проанализировать память устройства и удалить ненужное.
  • Установка антивируса и сканирование системы. При обнаружении проблем следовать инструкциям.
  • Очистить кэш вылетающего приложения.

Для устаревших версий ОС вылет приложений – обычное явление, со временем ситуация только ухудшится. Выхода два: купить другой гаджет или проверить наличие обновлений Андроида:

  1. Зайти в Настройки.

  1. Перейти в раздел О телефоне, затем во вкладку «Обновление системы».

  1. Нажать на «Проверить обновления», если они есть, кликнуть на «Загрузить».

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

CleanMaster: помощь или вред

Клинмастер широко известен как многофункциональный инструмент для очистки памяти смартфона. Однако использовать его постоянно не рекомендуется: удаляя временные файлы, он вынуждает их открытие каждый раз при загрузке приложений. Это даст лишь дополнительную нагрузку на процессор и батарею. Рационально пользоваться им только после загрузки редко используемых «тяжелых» программ.

Заключение

Разобраться в причинах вылета приложений на смартфонах и планшетах Андроид несложно, если проанализировать состояние устройства. Поддерживать в чистоте память, скачивать программы безопасно и вовремя обновлять операционную систему – таков рецепт решения этой проблемы.

На телефоне либо планшете (Android) выбрасывает из приложений, интернета, браузера. Не запускаются приложения, «пишет ошибка камеры», приложения и игры закрываются сами. Что делать и как лечить?

На телефоне либо планшете (Android) выбрасывает из приложений, интернета, браузера. Не запускаются приложения, «пишет ошибка приложения, камеры», приложения и игры закрываются сами. Что делать и как лечить?

Многие пользователи сталкиваются с проблемой, когда телефон либо планшет на базе Android начинает капризничать. Вроде и не падал негде и не «поливали» не чем, а работает не так, как должен.

Например, в устройстве появились проблемы с тем, что в телефоне либо планшете не правильно работают, самостоятельно закрываются либо вовсе не запускаются те или иные приложения. Причиной тому может быть:

1-ое: Программный сбой — т.е. проблема заключается в сбое программного обеспечения

2-е: Аппаратный сбой — т.е. проблема заключается в «железе»(т.е. — требуется замена либо восстановление запчастей гаджета)

Однако, не спешите расстраиваться — в 90% случаев с проблемами запуска и работы приложений смартфона или планшета на базе Android виноват программный сбой, который Вы вполне сможете исправить своими силами.

Исправляем программный сбой:

Способ 1. Довольно простой — заходите в «настройки», находите там «резервное копирование и сброс», в котором выбираете полный сброс настроек с удалением всех данных. Будьте внимательны, применение данного способа часто оказывается действенным, однако влечет за собой удаление всех фотографий, контактов, паролей, музыки, игр, видео и в общем-то, всей информации, хранящейся на вашем смартфоне или планшете. Потому,  предварительно сохраните все, что Вам нужно, подсоединив гаджет к компьютеру. Если данный способ Вас не устраивает, либо если и после него проблема не устранена, смотрите Способ 2.

Способ 2.

Основан на решении проблем со связью и приемом сети телефонов и планшетов на базе Android методом внедрения дополнительного ПО. Утилит, контролирующих все процессы внутри гаджетов. На сегодняшний день, их довольно много, однако, чем меньше функций содержит приложение, тем больше, как правило, оно действенно. Лучше всего контролирует функции системы, корректирует, и исправляет все возможные ошибки настроек и синхронизации небольшая, и простая в обращении, бесплатная утилита для устройств на базе Android Multi Cleaner . Скачать приложение из Google Play и посмотреть его дополнительные опции в описании можно ТУТ. После установки приложения, его остается только запустить. Дальше,  от Вас, в принципе, больше ничего не требуется. Приложение полностью возьмет на себя контроль функций устройства. (К слову говоря, кроме всего прочего, гаджет начнет заряжаться на 20% быстрее, а также существенно повысится его производительность, что отразится на скорости загрузки и работы всех приложений, игр, и системы в целом. В среднем, после сканирования, система работает на 50% быстрее.)

  • Помимо этого, стоит очистить систему при помощи НОРМАЛЬНОГО антивируса. Лучше всего, с этой задачей справляется антивирус Касперского, скачать который можно ТУТ. В отличие от «мульти-клинера», софт «Лаборатории Kaspersky» платный, потому, если возможности установить такую защиту у Вас нет, этот шаг можно и пропустить…

 

Способ 3.

 Смена программного обеспечения устройства, или, как ее еще называют«перепрошивка». Данный способ, как правило, требует определенных навыков и решается по средствам обращения в Сервисный Центр. Для самостоятельного же осуществления данной задачи нужно обратиться к сайту-производителю Вашего устройства, скачать нужные для прошивки утилиты и саму прошивку, после чего переустановить ее на Вашем гаджете.

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

Почему вылетают игры и приложения на телефоне с Андроид

Почему же вылетают игры или приложения на телефонах с Андроид? Исправь данную проблему при помощи наших инструкций за считанные минуты!

Содержание:

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

Кстати, напишите в комментариях как часто вы сталкиваетесь с проблемой не стабильной работы приложений и какое приложение работает у вас хуже всего.

Почему вылетают игры и приложения

Для начала стоит перечислить основные причины, по-которым приложения могут не запускаться или вылетать, их всего пять.

  1. Несовместимость версий. Такое бывает, когда вы пытаетесь установить приложение написанное под андроид 2 версии на андроид 10 версии или наоборот – приложение написанное под 10й андроид вы устанавливаете во 2й версии андроида.
  2. Слишком слабое железо. Характеристики телефонов 2015 года выпуска и старше редко могут тянуть современные приложения.
  3. Вирусы. Вредоносный код тоже часто являются причиной нестабильной работы приложений.
  4. Не актуальные версии ос или приложений. Баги в не актуальных версиях приложений или самого андроида так же могут вызывать проблемы их работе.

Что делать если вылетают игры и приложения

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

  • «Настройки», далее тапаем на пункт «Приложения»;
  • Выбираем пункт “Все приложения”;
  • Выбираете в списке проблемное приложение, например ВК, и тапаем по нему;
  • После чего тапаем на кнопку Очистить и выбираем пункт Очистить кэш.

Зачастую данного действия достаточно, чтобы проблемы была решена.

Решение проблемы вылетающих игр

Если первый способ не помог – тогда сначала проверяете актуальность текущей версии андроид.
Для этого заходим в настройки – О телефоне, тапаем по пункту – версия и далее на кнопку “Проверить обновление”.
Если версия андроид актуальная – нечего не произойдет – если не актуальная – андроид будет обновлен.
После выполнения данного действия – можно удалить проблемное приложение и установить его заново.

Если нечего не помогло

Если все вышеперечисленное не помогло – тогда самое время проверить телефон на вирусы при помощи dr.WEB, просто запускаем антивирус и тапаем на пункте – “Сканер” – “Полная проверка”.

Так же стоит почистить телефон от мусора и лишних файлов при помощи CCLEAN. Так же просто запускаем приложение и жмем кнопку начать.

Если же все вышеперечисленное не помогло – тогда придется прибегнуть к сторонним приложениям. Попробуйте скачать и установить Dr. Booster. Оно особенно актуально для игр и позволяет высвободить максимум ресурсов для работающего приложения. Просто запускам данное приложение и уже через него запускаем нужную игру.

Еще 3 полезных статьи:

Вылетают приложения на Андроид: как исправить

Насладиться любимой игрой или работой в определенном приложении практически невозможно, если оно постоянно вылетает. Если вылетают игры, вы можете потерять свои сохранения, что приведет к необходимости все проходить заново. Это, естественно, портит впечатление о приложении. В связи с этим, очень часто пользователи спрашивают, что делать, если вылетает приложение на «Андроид». Решений может быть несколько (начиная от элементарной перезагрузки устройства и заканчивая полным обновлением системы).

Основные причины вылетов

Прежде чем говорить о методах решения, необходимо разобраться, почему вылетают игры на «Андроид». Причины могут быть как программными, так и аппаратными. В некоторых случаях вылетает игра не по вине пользователей. К наиболее распространенным причинам относятся:

  1. Плохая оптимизация приложения. Некоторые недобросовестные разработчики создают программы на Android «заточенные» лишь под небольшую группу определенных устройств. На всех остальных гаджетах такие приложения будут работать некорректно, так как нуждаются в дальнейшей оптимизации.
  2. С вашим гаджетом несовместима игра на андроиде. Игры на андроиде могут вылетать из-за устаревшей операционной системы. Возможно, ваше «железо» является несовместимым с требованиями.
  3. Поврежденный установочный файл. Если вы скачивали не с официального магазина Play Market, то apk-файл мог быть поврежден во время загрузки или при сборке сторонними людьми. Можно попробовать перекачать установщик, а затем установить заново.
  4. Неправильно распакован кэш. При установке программ со сторонних сайтов нередко требуется для корректной работы установить кэш в правильную папку. Если вы этого не сделали или выполнили неверно, то это может служить причиной многократных вылетов.
  5. Вирусы. Вредоносное программное обеспечение может конфликтовать с приложением и вызывать его ошибки.
  6. Недостаток памяти. Приложения регулярно обновляются. Если у вас не хватает свободного места, это может привести к неработоспособности программы или ее вылетам.
Исключить половину проблем можно, устанавливая цифровой контент только с официального Google Play. Для этого вам понадобится только аккаунт из gmail.

Вылетают приложения на “Андроид”: как исправить

Что делать, если игра вылетает? В первую очередь рекомендуем почитать системные требования на официальной странице в «Плей Маркет». Если ваш мобильный гаджет не соответствует требованиям аппаратно, то единственным решением является купить более современное устройство. Если ваша версия «Андроид» не поддерживает данное приложение, тогда необходимо сделать обновление системы. Для этого нужно следующее:

  1. Зайдите в настройки телефона. Найдите раздел «О телефоне».
  2. Выберите пункт «Обновление системы».
  3. Дождитесь окончания установки.

Это позволит быстро и без проблем обновить вашу версию «Андроид». Если в этом пункте нет актуальных обновлений, вам понадобиться перепрошить телефон вручную. Для этого предварительно рекомендуем узнать, сможет ли с аппаратной точки зрения ваше устройство поддержать более новую версию ОС. Почитайте отзывы других пользователей. Проблема может быть у всех, тогда стоит только ожидать новой версии программы.

Если устройство соответствует всем требованиям игры, а вылеты все равно случаются, необходимо попробовать один из следующих вариантов:

  • Перезагрузите гаджет. Банальный, но во многих случаях эффективный совет. Если произошла какая-то разовая системная ошибка, которая влияет на работоспособность программы, перезагрузка позволит ее устранить.
  • Почему приложения вылетают? У вас может быть открыто слишком много программ. Необходимо выгрузить их из памяти, а затем освободить место под необходимое приложение. Для этого нужно зажать функциональную или среднюю клавишу гаджета и свайпом вбок или вверх «выкинуть» их за пределы экрана.

  • Проблемы могут быть в слишком большом кэше или данных программы. Как выйти из этой ситуации? Почистите кэш и раздел данных в нужном приложении.

  • Проверьте на наличие вирусов. Для этого скачайте в «Гугл Плей» один из антивирусов, а затем просканируйте телефон. Одной из самых эффективных программ для поиска вредоносного ПО является Dr. Web.
  • Проверьте правильность размещения кэша для игр, скачанных с других сайтов. Если он находится не в той папке, это может свидетельствовать о выходе из строя игры.
  • Почистите систему от различного мусора. Сделать это эффективно позволяют некоторые такие приложения, как Clean Master, или App Cache Cleaner.

У вас все равно вылетают приложения на «Андроид», а вопрос, как это исправить, остается актуальным? Тогда можно выполнить сброс до заводских настроек. Обязательно сделайте перед этим резервную копию данных, так как ваши файлы будут стерты.

Пожаловаться на контент

Как исправить приложения Android сами закрываются (автоматически)

Телефоны Android становятся более надежными с каждым днем. У нас есть чипсеты в паре с памятью, что почти эквивалентно тому, что есть в среднем ноутбуке. Но тогда наши телефоны в конечном итоге делают гораздо больше работы, чем средний ноутбук. Помимо игр, видео и приложений для социальных сетей, мы делаем регулярные звонки, делаем видеовызовы и делаем много других вещей, которые требуют того, чтобы телефон все время хорошо работал.

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

Но, прежде чем перейти к решениям, вот несколько причин, которые могут привести к этой проблеме:

Сетевые проблемы

Приложения, зависящие от Интернета, могут в конечном итоге дать сбой, если у вас нестабильная сеть или, если вы делаете переход с мобильного интернета к Wi-Fi-соединению. В то время как лучшие приложения будут работать отлично, приложения с более слабым кодом, возможно, не смогут преуспеть в таких ситуациях.

Ошибки в приложении

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

Перегрузка процессора или неправильное использование памяти

Каждый телефон построен так, чтобы выдерживать определенный уровень использования. Некоторые пользователи в конечном итоге перенагружают процессор, устанавливая приложения, которые не подходят для телефона. Это создает нестабильность в приложении, что приводит к его сбою.

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

Решения для исправления Android-приложений, которые сами закрываются

Решение 1. Обновите приложение

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

  1. Перейдите в Play Маркет
  2. Нажмите на значок меню (три горизонтальные полосы) слева от строки поиска
  3. Нажмите Мои приложения и игры
  4. Из списка установленных приложений и игр найдите приложение, вызывающее проблемы, и проверьте, подсвечена ли кнопка обновления рядом с ним.
  5. Нажмите Обновить, если кнопка подсвечена, и последняя версия приложения будет установлена на вашем устройстве.

После обновления приложения проверьте, была ли проблема решена.

Решение 2: Свободное место в вашем устройстве

Многим приложениям требуется достаточно много свободного места для создания новых файлов или хранения данных, созданных при использовании приложений. Когда в телефоне или планшете заканчивается память, приложению становится сложно создавать данные. Многие устройства имеют большое хранилище, но, если у вас слишком много приложений и файлов данных, занимающих место, ваше приложение может вылетать. Легкий способ решить эту проблему — найти приложения, которые вы долго не использовали, и удалить их. Вы также можете использовать приложения Android для очистки старых и нежелательных файлов с устройства.

Решение 3. Очистка кэша приложений и данных приложений

Если приложение часто падает, вы можете устранить проблему, очистив кэш приложения и его данные. Кэш-файлы приложений включают данные, которые ускоряют производительность приложения. Удаление файлов кэша не приведет к потере важных данных. Файл будет автоматически создан при открытии приложения в следующий раз, хотя вы можете заметить небольшую задержку при открытии приложения после удаления файлов кэша. Это происходит потому, что файлы кэша создаются заново.

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

  1. Перейдите в меню Настройки вашего устройства
  2. Нажмите Приложения
  3. Найдите приложение, вызывающее проблему, и нажмите на него
  4. Нажмите Очистить кэш
  5. Затем нажмите Очистить данные и нажмите ОК, когда появится предупреждение о том, что данные, связанные с конфигурацией приложения, будут потеряны.

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

Решение 4. Удалите приложения, которые вы не используете

  1. Нажмите значок Настройки в шторке уведомлений
  2. Найдите Приложения и нажмите на них
  3. Поищите приложения, которые вам не нужны
  4. Нажмите на них, и у вас либо будет возможность удалить, либо отключить их.

После удаления приложений, которые вы не используете, перезагрузите устройство и проверьте, исправлена ли проблема закрывающегося приложения.

Дополнительные советы:

В дополнение к этим решениям, имейте в виду следующее, дабы убедиться, что Android устройство работает хорошо и приложения работают бесперебойно:

  1. Помните о производительности телефона при установке мощных приложений. Если ваш телефон создан для среднего использования, вы не сможете запускать тяжеловесные игры и приложения, которые могут нанести ущерб процессору. Для тяжелых приложений требуется высокая производительность устройства.
  2. Не забудьте иметь всегда достаточно места для хранения в телефоне, чтобы приложения могли легко создавать файлы данных. Неадекватное пространство часто может быть основной причиной многих проблем.
  3. Некоторые приложения хорошо работают на некоторых устройствах Android и не работают на других. Проблема в том, что разработчики не имеют возможности тестировать каждое приложение на всех устройствах Android. В большинстве случаев вы можете видеть, как определенная группа пользователей столкнулась с проблемой, и видеть это можно через форумы или обратную связь с приложениями. Может и вы принадлежите к такой группе пользователей? В этом случае вам, возможно, придется подождать, пока разработчик заставит приложение работать на вашем устройстве, или вам может быть лучше удалить приложение.

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

Еще статьи из рубрики Android:

Как исправить сбой приложений на iPhone и iPad

Хотя приложения для iPhone и iPad, как правило, очень стабильны, иногда вы можете столкнуться с случайным аварийным завершением работы приложения. В iOS сбойное приложение обычно представляет собой приложение, которое, кажется, немедленно завершает работу, возвращаясь на домашний экран устройства без намерения пользователя. Сбой приложения может произойти сразу после его запуска, сбой случайно во время использования приложения, а иногда сбой может даже быть предсказуемо вызван определенным действием, предпринимаемым в приложении.Независимо от того, когда приложение iOS дает сбой, мы рассмотрим несколько решений, которые почти всегда помогают устранить проблему и снова помогут вам беспроблемно использовать приложение.

Сбой приложений iOS? Следуйте этим 5 советам, чтобы решить проблему

Мы перечисляем эти советы в порядке их простоты и сложности. Для достижения наилучших результатов вы, вероятно, захотите попробовать их все.

1: перезагрузить устройство

Хорошо, прежде всего, просто перезагрузите iPhone, iPad или iPod touch.Это так хорошо работает для решения многих распространенных проблем, связанных со сбоями приложений, и настолько просто, что вам обязательно нужно сначала попробовать это.

Лучший способ решить проблемы, связанные с сбоями приложения, — это попытаться принудительно перезагрузить iPhone или iPad, удерживая кнопку питания и кнопку «Домой», пока на устройстве не замигает логотип Apple. Затем дайте ему загрузиться и попробуйте снова использовать приложение, оно должно работать … если нет, продолжайте читать!

2: выйти и повторно запустить приложение

Иногда самым простым решением для устранения сбоя приложения в iOS является выход из приложения, а затем его перезапуск.Идея состоит в том, чтобы очистить приложение из памяти и разрешить чистый запуск.

  1. Дважды щелкните кнопку «Домой», чтобы открыть экран многозадачности.
  2. Найдите приложение, которое вы хотите закрыть, затем смахните вверх по приложению, чтобы выйти из него
  3. Нажмите кнопку «Домой», чтобы вернуться на главный экран iOS, затем нажмите значок приложения, чтобы открыть его снова

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

3: Обновите приложение

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

  1. Откройте App Store и перейдите на вкладку «Обновления»
  2. Установите все доступные обновления для приложения, в котором обнаружены проблемы со сбоями или ошибки
  3. Перезапустить недавно обновленное приложение

Если сбой приложения был вызван ошибкой, которая была исправлена ​​с помощью обновления приложения, это решит проблему.

По-прежнему возникают проблемы с отказом приложения? Бывает! Двигайтесь вперед, мы еще не закончили.

4: удалите приложение и переустановите

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

  1. Найдите проблемное приложение на главном экране iOS, затем нажмите и удерживайте значок
  2. Нажмите на значок (X), когда он появится, затем подтвердите, что хотите удалить приложение
  3. Теперь запустите App Store и используйте функцию поиска (или перейдите на вкладку «Покупки») и найдите имя приложения, которое вы только что удалили, а затем повторно загрузите его.

Попробуйте снова открыть приложение, работает нормально? Хорошо, должно быть.

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

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

Если проблема не исчезнет, ​​убедитесь, что у вас установлена ​​последняя версия iOS…

5: Обновите iOS до последней версии

Обновления

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

  1. Сделайте резервную копию iPhone, iPad или iPod touch в iCloud или iTunes — не пропустите
  2. Откройте «Настройки»> «Общие»> и перейдите в «Обновление программного обеспечения».
  3. Выберите «Загрузить и установить» и дождитесь завершения всего процесса обновления iOS.

Когда iPhone, iPad или iPod touch снова загружается в последнюю версию iOS и, если вы уже выполнили описанные выше шаги и обновили приложение, приложение, в котором произошел сбой, почти наверняка будет работать без происшествий на этом этапе. .

Обновление до новой версии iOS и новой версии приложения действительно работает. Недавно у меня был друг, столкнувшийся с этим точным сценарием, когда Instagram вылетал, приложение постоянно вылетало у них, независимо от того, что они делали, сначала при прокрутке ленты, а затем мгновенно вылетало при запуске приложения — единственным решением было обновить iOS до последней версии, что сразу решило проблему.

Сработали ли эти уловки для решения проблем, связанных со сбоями вашего приложения? Есть ли у вас другое исправление, которое работает, когда приложение iPhone, iPad или iPod touch дает сбой в случайном порядке или дает сбой при запуске? Сообщите нам в комментариях, что работает для вас!

Связанные

6 основных причин сбоя мобильных приложений

Люди ненавидят, когда приложения падают, или даже когда они замедляются или зависают на несколько секунд.Согласно опросу, проведенному Dimensional Research, 61 процент пользователей ожидают, что мобильные приложения будут запускаться в течение четырех секунд, а 49 процентов хотят, чтобы ответ на ввод был в течение двух секунд. Если приложение дает сбой, зависает или содержит ошибки, 53 процента пользователей удаляют его.

Независимо от того, являются ли ваша целевая аудитория потребителями или корпоративным сообществом, разочарование их — это быстрый путь к застыванию. Я поговорил с рядом мобильных разработчиков и спросил о наиболее распространенных проблемах, с которыми они сталкиваются. Вот шесть основных способов, которыми ваша разработка может сбиться с пути и поставить ваше приложение под угрозу производительности.

1. Управление памятью

Практически все, с кем я говорил, одной из самых больших проблемных областей является управление памятью. Приложение может вращать слишком много потоков и поглощать ресурсы памяти или работать в системе, в которой открыто слишком много приложений. «Люди пишут код так, как будто существуют только их приложения», — говорит Сачин Агарвал, вице-президент по маркетингу OpsClarity. По его словам, ваше программное обеспечение должно быть «хорошим гражданином в экосистеме приложений». «Я смотрю некоторые новостные приложения, и они просматривают почти гигабайт данных.Они архивируют новости за последний месяц. В мобильных приложениях должен появиться определенный уровень корпоративного гражданства ».

Не то чтобы проблема одинакова для всех разработчиков.« В iOS есть больше вещей, которые вы можете сделать, чтобы использовать Objective-C для решения многих задач. проблемы с памятью », — говорит Эндрю Уайтинг, вице-президент по развитию бизнеса Solstice Mobile. Но есть компромисс.« В Android у вас есть гораздо более глубокий контроль [памяти], и вы обычно можете заставить его делать именно то, что вы хотите. делать, что добавляет сложности.»

» Вы сталкиваетесь с такими вещами [с Android], как [исчерпание] памяти в Java, что обычно коррелирует с такими вещами, как загрузка больших изображений или обработка растровых изображений «, — говорит Джонатан Карон, старший менеджер по разработке программного обеспечения в New Relic. который распространяет мобильный SDK, который сообщает о технической производительности и скомпилировал распространенные причины проблем. «На самом деле существует удивительное количество проблем, которые выглядят как проблемы с компоновщиком на Android, когда класс не может быть найден или есть исключение, называемое неклассифицированной ссылкой .«С другой стороны, приложения iOS часто страдают от исключения NSInternalInconsistency, которое случается, когда разработчик изменяет массив или коллекцию данных в одном месте», в то время как что-то еще читает список вещей, которые там есть ».

2. Жизненный цикл программного обеспечения

Итеративный процесс разработки приложений с его постоянными сериями частых выпусков открывает двери для выхода на рынок с минимально жизнеспособным продуктом, а затем со временем его улучшают, создавая аудиторию.Но потеря традиционного жизненного цикла программного обеспечения приводит к значительным осложнениям из-за зависимости от операционной системы и сторонних API.

«Если вы посмотрите на последние обновления Android, приложения часто вылетают», — говорит Агарвал. «Сама ОС нестабильна. Или ОС обновляется, а приложение не обновлялось». Или пользователь не скачивает новую версию. «У вас нет контроля, и это говорит об основном процессе разработки».

Рост мобильных и облачных вычислений привел к увеличению использования сторонних сервисов и связанных с ними API, которые экономят время и помогают быстрее вывести приложение на рынок.Но у них есть свои проблемы.

«Многие библиотеки имеют наименьший общий знаменатель», — говорит Уайтинг. «Они пытаются решить проблемы каждого и ни для кого не находят оптимального решения». Например, данный API может иметь ограничение производительности для определенного приложения.

API также может использовать хитрые приемы, такие как использование методов iOS. Разработчик изменяет сопоставления с имени метода на реализацию, что позволяет изменять исходный метод, когда исходный код, например API от Apple, недоступен.«Это можно назвать одним из« темных искусств »разработки приложений для iOS», — говорит Раман Бхатия, директор по мобильным устройствам онлайн-туристического агентства Fareportal. «[Но] если код вашего приложения написан определенным образом, это может вызвать сбой».

API также могут вносить неожиданные изменения. «Задержки API, частота ошибок, пропускная способность данных, используемая версия API и количество запросов API могут привести к небольшим проблемам, которые становятся большими проблемами», — говорит Агарвал. Затем существует цепочка зависимостей для самих API, которая создает потребность в специализированных инструментах для отслеживания всего.

API также может вызывать другие проблемы, например ошибки памяти. «Вы указываете на объект, который уже удалили из памяти, и это обычно не проблема, если вы создали все объекты самостоятельно, потому что знаете, можете ли вы ссылаться на него или нет», — говорит Лонг Ле, соучредитель и разработчик We Get Fit, новое фитнес-приложение для Apple Watch и iPhone. «Проблема возникает, когда вы вводите сторонние фреймворки. Вы никогда не знаете, что они очищают и что создают».

3.Неадекватное тестирование

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

Например, один поток приложения может попытаться прочитать базу данных, в то время как второй поток пытается изменить ту же базу данных. «Это проблема времени, — говорит Уэйн Картер, главный архитектор мобильных устройств в Couchbase.«Если они не попадают в точный момент времени, проблема не всплывает. Ее можно скрыть с помощью чего-то столь же простого, как оператор журнала». Симулятор часто не демонстрирует те же основные ограничения производительности, что и мобильное устройство, поэтому состояние гонки неочевидно.

Существуют службы, которые запускают пары различных устройств и вариантов операционных систем и делают их доступными, но это, вероятно, будет дороже, чем симулятор. Выбор становится компромиссом между бюджетом и потребностями.

Тестирование следует сочетать с сравнительным анализом в соответствии с отраслевыми стандартами и ожиданиями пользователей, чтобы убедиться, что то, что кажется разработчикам приемлемым, также приемлемо для пользователей. Тестирование также должно происходить на постоянной основе. Следите за производительностью и ищите отзывы пользователей о проблемах, а затем исправляйте их как можно скорее.

4. Управление сетью

Поскольку приложения все больше зависят от доступа к сети, будь то данные или сторонние сервисы, управление сетью стало источником проблем.

«Самая важная причина [сбой приложений] — это отзывчивость и зависание вашего приложения, когда вы пытаетесь получить какие-то данные или что-то отправили и ждете ответа», — говорит Правин Вазирани, заместитель вице-президента. операций для Chetu, консалтинговой компании по разработке программного обеспечения. Возможно, у разработчика хорошее соединение Wi-Fi, но пользователь находится в мобильной сети в зоне с плохим приемом.

Изменение сети, вызванное переходом с 3G на 2G, входом и выходом из лифтов или потерей приема, особенно сложно и может привести к потере или зашифрованию пакетов.К счастью, «многие из этих условий можно [смоделировать] с помощью нескольких сценариев», — говорит Рой Кармель, старший вице-президент по продуктам и стратегии компании Perfecto Mobile, занимающейся тестированием мобильных приложений.

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

5. Состояние ошибки и обработка исключений

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

Между такой ситуацией и сбоем стоит хорошая обработка ошибок и исключений. Таким образом, приложение не может быть сброшено из-за неожиданной попытки деления на ноль, неправильно введенного ответа от пользователя, API, который внезапно начал предоставлять текст в качестве ответа вместо числового значения, или временной потери подключения.

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

6. Слишком много кода

Но, возможно, лучший совет — сделать приложение простым. Предоставьте людям одноцелевой инструмент и используйте это упражнение для кодирования только того, что необходимо.«Лучший и наиболее свободный от ошибок код — это код, который вы не пишете», — говорит Фелипе Ласо-Марсетти, старший системный инженер компании Lextech Global Services, занимающейся корпоративной мобильной разработкой.

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

Изображение: Miia Sample / Flickr

Продолжайте учиться

4 способа отладки сбоев приложений

Среди худших вещей, которые могут случиться с разработчиком приложения, — это сбой программного обеспечения у клиента и то, что клиент говорит ему по телефону и кричит. Так как же подготовиться к такой возможности?

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

Здесь можно найти вакансии разработчика приложений.

Я обращаюсь больше к разработчику настольных систем Win32, чем, скажем, к экспертам по рабочим столам .NET (или Linux), но принципы все еще применимы.

Поймать все исключения

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

По моему опыту, Microsoft Office очень хорошо сохраняет данные. В вашем программном обеспечении есть множество способов сделать это: перехватить исключение и сохранить данные или реализовать схему журналирования, при которой оно хранится на диске во временном файле до тех пор, пока не будет сохранено должным образом. Если происходит сбой, журнал можно прочитать для восстановления последних данных.

Получение дампа стека и регистрация или отправка его по электронной почте были стандартом в мире .NET / Java в течение многих лет, и это также делается в мире Win32.

Создайте секретные инструменты отладки

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

Последнее, что вам нужно, — это предоставить клиенту доступ на уровне администратора.Если они сами не технари, это вряд ли закончится хорошо. Я использовал подход, при котором активация работает только в том случае, если в папке приложения присутствует файл со специальным именем. Файл называется примерно C53A.txt . Нечетное имя использует простую схему обфускации, переворачивая «дату Excel» в шестнадцатеричном формате, чтобы файл был пригоден только до конца дня. Но подойдет любая схема, если она не подпускает случайного пользователя.

Инструменты отладки на уровне администратора

должны включать команды запуска консоли SQL, а также обеспечивать доступ к внутренним структурам данных и т. Д., и изменить уровни ведения журнала. Запуск приложения в расширенном режиме ведения журнала может помочь определить причину сбоя. В некоторых случаях, когда мне не удавалось отладить приложение вживую, я создавал версию с оператором регистрации для каждой строки в затронутом методе. Это не лучший метод (он раздувает и немного замедляет приложение в этой области), но иногда это единственный выход.

Предоставление клиенту «средств отладки», таких как отправка снимка экрана или отправка по электронной почте текстового файла, содержащего внутреннюю трассировку стека, также поможет вам.

Отладка данных извергает

Это мое имя для создания вашего приложения, которое постоянно выводит данные в канал отладки.

Win32 имеет полезную функцию OutputDebugString () , часть Kernel32.dll. Он отправляет строку подключенному отладчику. Вы можете встроить множество вызовов этого в свою программу с небольшими накладными расходами. Если отладчика нет, это не имеет значения. Microsoft предоставила множество полезных инструментов, в том числе DebugView. Это часть прекрасной коллекции SysInternals.Внутри Visual Studio вы можете видеть результат, и если вы запустите DebugView на том же компьютере, что и ваша программа, он захватит весь вывод OutputDebugString.

Лесозаготовка

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

Статьи по теме

Изображения: Laborant / Shutterstock.com, Дэвид Болтон

Windows 7: Анализ аварийного дампа приложения — статьи TechNet — США (английский)


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

В современном мире .NET инструменты, которые нам предоставляют, намного превосходят все, что мы могли себе представить 15 лет назад. Хотя доктор Ватсон мог создавать аварийные дампы, большинство разработчиков в то время не знали, что с ними делать после того, как они были созданы. особенно такого старого разработчика Visual Basic 6, как я.

Crash dump — ценный ресурс для нас, разработчиков, и Windows 7 предоставляет нам несколько замечательных функций для создания аварийных дампов через Windows Error Reporting (WER).Это место в реестре, где находится WER, и это будет нашей отправной точкой в ​​этой статье, показано в Рисунок 1 .

Рисунок 1 : Расположение WER в реестре.

Ключ реестра (LocalDumps) по умолчанию не создается для нас в реестре, поэтому вам придется засучить рукава и делать грязную работу самостоятельно. Описание значений в разделе реестра LocalDumps показано в Таблица 1 .

Значение реестра Описание
CustomDumpFlags Будет использоваться, только если для DumpType установлено значение 0.В таблице 2 показаны все возможные перечисления.
DumpCount Ограничение количества дампов, хранимых в DumpFolder
DumpFolder Папка, в которой будут храниться дампы
Тип дампа Есть три возможных значения

1.0 — кастомный дамп

2. 1 — Мини-отвал

3. 2 — Полный дамп

Таблица 1 : Описание раздела реестра LocalDumps

Если мини-дамп слишком мал или полный дамп слишком велик, у нас есть возможность создать собственный дамп.Когда для параметра DumpType установлено значение 0, мы указываем WER, что хотим сгенерировать дамп, используя значение в CustomDumpFlags. Таблица 2 показывает все возможные значения для CustomDumpFlags

Мини-насос Тип

Значение
MiniDump Нормальный

MiniDumpWithDataSegs

Минидамп с полной памятью

MiniDumpWithHandleData

MiniDumpFilterMemory

MiniDumpScanMemory

MiniDumpWithUnloadedModules

MiniDumpWithIndirectlyReferenced

ПамятьMiniDumpFilterModulePaths

MiniDumpWithProcessThreadData

MiniDumpWithPrivateReadWriteMemory

Минидамп без дополнительных данных

MiniDumpWithFullMemoryInfo

MiniDumpWithThreadInfo

MiniDumpWithCodeSegs

Минидамп без вспомогательного состояния

Минидамп с полным вспомогательным состоянием

MiniDumpWithPrivateWriteCopyMemory

MiniDump — игнорировать недоступную память

MiniDumpWithTokenInformation

0x00000000

0x00000001

0x00000002

0x00000004

0x00000008

0x00000010

0x00000020

0x00000040

0x00000080

0x00000100

0x00000200

0x00000400

0x00000800

0x00001000

0x00002000

0x00004000

0x00008000

0x00010000

0x00020000

0x00040000

Таблица <2 : Перечисления типов минидампа

Каждый раз, когда вы компилируете приложение, используя конфигурацию Debug или Release, вместе с Portable Executable будет создан файл PDB.Большинство разработчиков выбрасывают эти файлы, даже не задумываясь о том, что они содержат. Фактически, файлы PDB так же важно, как и Portable Executable. Файлы PDB в целом содержат указатель на исходный код и все символы, необходимые для отладки переносимого исполняемого файла. Целью данной статьи не является углубленное изучение файлов PDB. Если бы вы узнайте больше о файлах PDB, а затем просмотрите следующие ссылки.

Теперь, когда у нас есть справочная информация о аварийных дампах и файлах PDB, пора создать приложение, которое выйдет из строя и сгенерирует для нас аварийный дамп.Для этого мы создадим консольное приложение, которое генерирует исключение NullReferenceException. Конечно, кто-то Вы, как и вы, никогда не позволите приложению упасть таким образом, поскольку вы полностью уважаете обработку исключений. Именно так поступил бы один из тех разработчиков, у которых распущенная мораль и вопиющее пренебрежение стандартами разработки.

  1. Откройте Visual Studio 2010
  2. File-> New Project и выберите Console Application из шаблонов Visual Studio.
  3. Назовите приложение CrashDumpTest и нажмите OK.
  4. Переключите конфигурацию с Debug на Release с помощью Configuration Manager.

Здесь мы создадим объект общего типа List (Of String).Мы не будем использовать ключевое слово New, и в результате наш список будет содержать пустую ссылку. Затем мы попытаемся добавить элемент в список. Перейдите к методу Main консольного приложения. и добавьте следующий код.

Разм. л Как Список (из строка )

л.добавить ( "струна" )

Хорошо, теперь осталось только построить консольное приложение.После сборки приложения выполните следующие действия:

  1. 1. Перейдите в папку выпуска, которая была местом назначения для вашей сборки
  2. 2. Откройте проводник Windows и создайте на диске C папку с именем Temp
  3. 3. Скопируйте CrashDumpTest.exe и CrashDumpTest.pdb в папку Temp

ПРИМЕЧАНИЕ. Я прошу вас сделать это по той причине, чтобы вы могли легко перейти к файлу PDB позже в этой статье.

Пришло время выполнить CrashDumpTest.exe и создайте аварийный дамп. Мой аварийный дамп будет создан в папке C \\ Drives \ Temp, которая является значением параметра реестра DumpFolder, описанного ранее в этой статье. Вы можете указать любую понравившуюся папку. После запуска CrashDumpTest.exe откроется диалоговое окно , показанное на рис. 2 .

Рисунок 2 : Диалоговое окно отчета об ошибках Windows после сбоя приложения

Вместо того, чтобы отлаживать программу отсюда, мы выберем Close Program.Мы пытаемся смоделировать сценарий, когда пользователь вашего приложения отправил вам файл дампа, и мы откроем файл дампа непосредственно из файловой системы в Visual Studio 2010.

Рисунок 3 показывает файл аварийного дампа в проводнике Windows

.

Рисунок 3 : Файл аварийного дампа, созданный отчетом об ошибках окна

В более ранних версиях Visual Studio у вас была возможность создать проект дампа.Это изменилось в Visual Studio 2010. Чтобы открыть файл дампа в Visual Studio 2010, выполните следующие действия.

  1. Откройте Visual Studio 2010
  2. Файл-> Открыть файл, перейдите в папку дампа и выберите файл дампа CrashDumpTest, показанный в Рисунок 3

После открытия аварийного дампа в Visual Studio 2010 вам будет представлена ​​следующая информация.

Рисунок 4 : Проиллюстрируйте файл дампа Crush, открытый в Visual Studio 2010

На этом этапе мы готовы к отладке нашего аварийного дампа.Позвольте мне прояснить это. Отладка аварийного дампа — это заблуждение, так как вы не можете пройти через код. Visual Studio фактически загрузит моментальный снимок сбоя приложения. Там это то, что я должен упомянуть о том, что находится в сводке дампа на рис. 4 . Обратите внимание на информацию о куче. Преимущество наличия информации о куче заключается в том, что при анализе нашего аварийного дампа у нас будут доступны подсказки с данными. Наше окно просмотра также может быть заполнено информацией о типе ссылки.

Используя расширитель «Действия» справа от , рис. 4 , щелкните «Отладка со смешанным». Это позволит нам проанализировать наш .NET-код.

Первое диалоговое окно, которое появится, показано на Рисунок 5

Рисунок 5 : Диалоговое окно Visual Studio при запуске отладки аварийного дампа

Выберите «Разрыв» в диалоговом окне, показанном на , рис. 5 . Снимок экрана Visual Studio в Рисунок 6 Появится . Не расстраивайтесь от того, что вы видите изначально.Мы еще не указали расположение для нашего файла PDB. Также обратите внимание, что окно стека вызовов показано на Рисунок 6 . Чтобы отобразить окно стека вызовов, выберите в меню Отладка-> Windows-> Стек вызовов

.

Рисунок 6 : Visual Studio показывает, что источник недоступен, если файл PDB не указан.

Чтобы указать расположение файла PDB, в меню выберите «Отладка» -> «Параметры и настройки». Диалог в Рисунок 7 Появится .

Рисунок 7 : Диалоговое окно настроек и параметров отладки

Выберите элемент дерева символов, который находится под элементом дерева отладки. Вы можете добавить папку в расположение файлов символов (.pdb), нажав желтую кнопку папки в правом верхнем углу экрана, показанного в Рисунок 7 . Помните, что в разделе « Создание приложения для сбоя » этой статьи я просил вас скопировать ваш PDB-файл в папку C: \ Temp. Ну, вот почему.Добавьте C: \ Temp к месту расположения символа. Как только у вас есть добавил папку нажмите кнопку Загрузить все символы. Это загрузит наши символы в текущий процесс. Щелкните ОК, чтобы закрыть диалоговое окно.

Рисунок 8 показывает результаты нашей предыдущей операции. Собственно то, что показано в Рисунок 8 не сразу появляется. В окне стека вызовов теперь отображается наш CrashDumpTest.exe, которого не было в Рисунок 6 . Чтобы отобразить наш код, вам нужно дважды щелкнуть наш CrashDumpTest.exe в окне стека вызовов.

Рисунок 8 : Дамп сбоя с окном кода и загруженными символами

Это подводит нас к заключению данной статьи. После сегодняшнего дня у вас должны быть навыки настройки отчетов об ошибках Windows для создания файлов дампа, понимание важности файлов PDB, а также знание того, как открывать и анализировать аварийный дамп в Visual Studio 2010.


10 причин и способы их устранения

Когда вы покупаете новую игру, вы ожидаете, что она просто заработает.В большинстве случаев так и бывает. Но иногда игры вылетают. Иногда это ошибка самой игры, а иногда — неадекватное оборудование или медленное интернет-соединение.

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

Почему ваша любимая игра продолжает вылетать?

Если вы не уверены, что вызывает сбой вашей игры, вы можете воспользоваться инструментом Windows Event Viewer, чтобы вести журнал о том, что происходит с вашим компьютером, когда игра вылетает.Это можно использовать в диагностических целях.

Также стоит запустить демо-версии игр перед установкой полной версии, чтобы убедиться, что игра будет корректно воспроизводиться на вашем ПК.

Если такие игры, как Minecraft, Apex Legends или Call of Duty: Warzone продолжают вылетать, вот 10 причин, почему это может происходить…

  1. Характеристики вашего компьютера слишком низкие
  2. Вы слишком сильно разогнали
  3. Неправильные настройки игры
  4. Ваша графическая карта требует слишком много энергии
  5. Вам необходимо обновить операционную систему
  6. Вам необходимо обновить драйверы устройств
  7. Ваша сеть недостаточно быстрая
  8. Управление цифровыми правами вызывает проблемы
  9. Игры работают в неправильном режиме
  10. У вас слишком много вкладок браузера

Давайте рассмотрим каждое из этих решений более подробно.

1.Слишком низкие характеристики вашего оборудования

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

При покупке игр онлайн в Steam и подобных сервисах вы можете проверить системные требования, прочитав описание игры.Покупаете в магазине видеоигр? На обратной стороне коробки с видеоигрой вы найдете минимальные и рекомендуемые системные требования.

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

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

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

2. Вы слишком сильно разогнали

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

Однако это не идеальный метод повышения производительности.Игры все еще могут вылетать.

Устранение неполадок в разогнанной системе означает сброс вашего процессора (и графического процессора, если необходимо) до настроек по умолчанию.Если это не решит проблему, скорее всего, это связано с чем-то другим.

3.Получите правильные настройки игры

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

Однако это не всегда срабатывает, что приводит к сбою в играх.Это может быть что угодно, от топовых графических приложений, таких как MotoGP 20, до сбоев Minecraft в середине игры.

В некоторых случаях может произойти сбой всего вашего ПК, перезагрузившись самостоятельно.

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

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

4.Ваша видеокарта слишком мощная

Одна из частых причин сбоев в играх — проблема с блоком питания (БП).Обычно это связано с тем, что графическому адаптеру требуется больше энергии, чем доступно.

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

Однако перед заменой блока питания убедитесь, что внутри видеокарты и ПК нет пыли и пыли.Накопление может привести к повышению температуры внутри ПК и дополнительной нагрузке на ЦП и видеокарту. Большая нагрузка означает более высокую температуру. Если накопление пыли будет значительным, а вентиляторов недостаточно для охлаждения, произойдет катастрофа.

5.Ваша операционная система недостаточно хороша

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

Большинство игр будет работать в Windows 8.1, Mac OS X 10.4 (Mojave) и Ubuntu 18.04 LTS и новее. Хотя это не обязательно верно для всех (некоторые игры по-прежнему ограничены Windows), это хорошее руководство. Точно так же большинство игр AAA предназначены для 64-битных систем.

Естественно, что вопросы операционных систем и железа тесно связаны.Старое оборудование под управлением Windows XP вряд ли подойдет для запуска самых современных видеоигр.

6.Пора обновить ВСЕ

Обновление оборудования стоит дорого.Перед тем, как попробовать это, обновите программное обеспечение и драйверы.

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

  • Чтобы обновить видеодрайверы, посетите веб-сайт производителя и загрузите последнюю версию драйвера.Для установки может потребоваться перезагрузка компьютера.
  • Вы также должны искать любые исправления и обновления для рассматриваемой игры. Они будут доступны на веб-сайте издателя и должны быть установлены и применены перед запуском. Некоторые игры автоматически проверяют наличие обновлений и устанавливают их перед загрузкой.
  • Обновите свою операционную систему, чтобы загрузить любые обновления драйверов для таких устройств, как сетевые карты.
  • Загрузите последние графические драйверы и обновления для вашей видеокарты.

7. Виноваты сетевые проблемы

В онлайн-играх сбои могут происходить, когда проблемы с сетью вызывают задержку обновления игрового клиента удаленным сервером.

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

По возможности избегайте Wi-Fi в онлайн-играх.Вместо этого подключите свой компьютер к маршрутизатору через Ethernet. Если это невозможно из-за архитектурных ограничений, купите один из лучших адаптеров Powerline.

8.Захвачено управлением цифровыми правами

Невероятно, но управление цифровыми правами может вызвать проблемы с производительностью.

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

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

9.Вы запускаете игры в неправильном режиме

Имеет смысл убедиться, что во время игры не запущено другое программное обеспечение.Вам может понадобиться программа голосового чата, такая как Discord; Помимо этого, ресурсы вашего ПК должны быть сосредоточены на запуске игры.

Это правило применяется во всех операционных системах, от Windows, macOS и Linux до iOS и Android.Закройте все остальное программное обеспечение перед запуском игры, в которую хотите играть.

С Windows у вас есть дополнительное преимущество: игровой режим.Это состояние, в которое вы можете переключиться, что снижает или ограничивает другую активность. Уведомления отключены; все ориентировано на игру. Откройте Settings (удерживайте Win + I ), затем Gaming> Game Mode . Щелкните переключатель, чтобы включить функцию.

Звучит слишком хорошо, чтобы быть правдой? Что ж, попробовать обязательно стоит.Мы протестировали игровой режим Windows 10, чтобы убедиться, что он работает.

10.Вы оставили работающий браузер с 20 открытыми вкладками

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

Итак, закройте бесконечные страницы Reddit, фан-страницы Facebook и ленту Twitter для ваших любимых игр.Если вам нужно получить к ним доступ, сделайте это на своем мобильном телефоне.

Позвольте вашему компьютеру выполнять ту работу, которую вы от него ожидаете, предоставляя вам потрясающие игровые возможности.

Пусть ваши игры снова заработают!

К настоящему времени вы должны знать, в чем проблема.У вас есть все необходимое, чтобы ваши игры перестали давать сбой. Так что веселых игр!

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

Twitter открывает аккаунт президента Трампа

После того, как Twitter заблокировал доступ Трампа к его аккаунту на 12 часов, Трамп вернулся в Twitter.

Об авторе Кристиан Коули (Опубликовано 1432 статей)

Заместитель редактора по безопасности, Linux, DIY, программированию и техническим вопросам.Он также выпускает The Really Useful Podcast и имеет большой опыт в поддержке настольных компьютеров и программного обеспечения. Автор статьи в журнале Linux Format, Кристиан — мастер Raspberry Pi, любитель Lego и фанат ретро-игр.

Больше От Кристиана Коули
Подпишитесь на нашу рассылку новостей

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Еще один шаг…!

Подтвердите свой адрес электронной почты в только что отправленном вам электронном письме.

Общие сведения о сбоях и журналах сбоев — WWDC 2018 — Видео

Скачать

О да, доброе утро, спасибо, что пришли.

Через минуту ко мне присоединятся несколько очень умных людей.

У нас сегодня для вас приготовлены очень интересные вещи.

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

Это разговор для всех нас, для тех из нас, кто ошибается.

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

В частности, я собираюсь осветить основы сбоев, почему они возникают, как они выглядят.

Тогда я собираюсь показать вам некоторые инструменты, которые у нас есть для доступа к журналам сбоев, когда они происходят в дикой природе.

Тогда Грег подойдет и расскажет вам подробнее о том, как читать содержимое журнала сбоев.

И затем он подробно расскажет, как прочитать сложную проблему с памятью с помощью журнала сбоев. И тогда Куба покажет вам, как на ранней стадии поймать гонки потоков, эти гонки приводят к сбоям, и эти сбои очень трудно воспроизвести. Итак, сначала мы должны определить, что такое сбой? Сбой — это внезапное завершение работы вашего приложения при попытке сделать что-то недопустимое. Так что нельзя? Ну, иногда ЦП не может выполнить код, ЦП не делит на ноль.

Или иногда это операционная система, которая применяет какую-то политику.

Операционная система сохранит взаимодействие с пользователем, убив ваше приложение, если оно запускается слишком долго или использует слишком много памяти. Иногда используемый вами язык программирования пытается предотвратить сбой и вызывает сбой.

Массив Swift и NSArray остановят ваш процесс, если вы попытаетесь выйти за пределы своего массива.

Или иногда вы, разработчик, пытаетесь предотвратить сбой.

У вас может быть API, в котором вы утверждаете, что параметр не равен нулю, и это нормально.

Так что остановите меня, если вы видели это раньше, это то, как это выглядит в Xcode в отладчике, когда отладчик подключен к вашему приложению и приостановил процесс непосредственно перед завершением вашего приложения.

И давайте внимательнее посмотрим на эту трассировку слева.

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

И, наконец, отладчик получает сигнал о том, что это приложение вот-вот выйдет из строя, и приостанавливает работу приложения.

Иногда вам не всегда удобно подключать отладчик, как мы здесь.

Когда вы не подключены к отладчику, операционная система захватит эту обратную трассировку в виде открытого текста и сохранит ее на диск в удобочитаемом журнале сбоев.

По правде говоря, в одном выпуске сборки вашего приложения происходит сбой, журнал на самом деле выглядит не так красиво.

На самом деле записан список двоичных имен и адресов.Это отрывок из несимметричного журнала сбоев.

Теперь, к счастью, Xcode позаботится о символизации журналов сбоев, так что вы увидите те красивые имена функций, имена файлов и номера строк, с которыми вы знакомы.

Итак, есть несколько способов получить доступ к этим журналам сбоев.

Сначала я хотел бы поговорить о том, как вы можете получить доступ к этим журналам сбоев у ваших бета-тестеров на TestFlight и ваших клиентов в App Store.

Вы можете загрузить эти журналы сбоев, используя функцию в Xcode, которая называется «Организатор сбоев», это то, как выглядит красивый темный режим.

И давайте рассмотрим этот интерфейс. Слева вы можете увидеть все свои приложения, распределенные через TestFlight и App Store, и мы поддерживаем все наши платформы, включая watchOS и расширения приложений.

Справа для данной точки сбоя вы можете увидеть количество уникальных затронутых устройств, и мы группируем журналы сбоев по схожей проблеме, по схожей точке сбоя и ранжируем их в исходном списке по количеству уникальных затронутых устройств.

Вы можете пролистать отдельные журналы ниже.

И когда вы нажмете на эту кнопку, вы можете открыть журнал сбоев в своем проекте в навигаторе отладки и увидеть его вместе с исходным кодом. Это очень круто, если вы раньше этого не видели, мы увидим это чуть позже.

И, конечно же, в подробном обзоре мы покажем вам полностью символическую трассировку с выделенной точкой падения.

Итак, теперь, когда у нас есть месторасположение, давайте поиграем с ним.

Итак, у меня здесь открыт Xcode, и я собираюсь открыть окно Организатора, и вы можете увидеть, что я выбрал вкладку Сбои, это вторая вкладка здесь, и я выбрал это приложение с шоколадной крошкой, которое мы с Кубой работают над.

Я загрузил эту сборку в TestFlight, и вы видите, что я сейчас смотрю на сборку 5, и несколько тестеров сообщают о сбоях, так что это не очень хорошо. Но я работал над парой из этих сбоев, которые вы можете видеть, но над первым я еще не работал, поэтому давайте попробуем решить это.

Итак, это влияет на 242 устройства, и я могу видеть обратную трассировку, которая была записана с момента сбоя приложения и выделения точки сбоя.

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

Итак, я собираюсь нажать кнопку «Открыть в проекте», выбрать проект, соответствующий сборке 5 моего приложения, и то, что я делаю, вы можете видеть, что этот журнал сбоев открылся в навигаторе отладки, как если бы это приложение только что разбился.

И здесь видно, что мы остановились на этой фатальной ошибке.

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

Итак, я вижу, что это инициализатор перечисления из int, и это перечисление может быть только нулем или единицей, в противном случае я попаду в эту фатальную ошибку.

Так что я думаю, что это имеет смысл, это должно вылетать только в случае неправильного использования программистом.

Итак, я могу увидеть вызывающего этого инициализатора, если перейду вверх по стеку вызовов здесь, и я увижу этот метод делегата tableView. Этот метод запрашивает заголовок для заголовка в заданном номере раздела.

Значит, номер раздела должен быть не равен нулю или единице.

Итак, я думаю, что лучше понимаю, что происходит, но давайте попробуем воспроизвести эту проблему в приложении и посмотрим, сможем ли мы узнать больше.

Итак, я начал играть. А шоколадная крошка — это приложение для рецептов, в котором я храню все свои любимые рецепты, и я тестировал этот рецепт взбитых сливок, и вы можете видеть, что все в порядке, я вижу свой список ингредиентов, свой список шагов. Это два раздела рецепта: ингредиенты — это нулевой раздел, а шаги — это первый раздел.

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

Итак, я собираюсь очистить этот журнал сбоев, нажав удалить, и давайте посмотрим на этот сеанс отладки.

Итак, в этой фатальной ошибке я вижу, что сообщение хорошо распечатывает, что номер раздела — восемь. Вот почему мы рушимся, это не ноль или единица.

И сейчас я понимаю, что это моя ошибка. Когда я реализовал этот класс, я реализовал другой метод делегата под названием numberOfSections.

И numberOfSections говорит, сколько заголовков он должен искать, и я возвращаю здесь количество ингредиентов, а количество ингредиентов равно восьми.

Но хотите верьте, хотите нет, у меня есть умный способ решить эту проблему. Я знаю, что я хочу вернуть, так это количество кейсов в этом перечислении раздела рецептов, и я знаю, что в Swift 4.2 сообщество Swift с открытым исходным кодом добавило некоторые новые функции, большое спасибо, протокол под названием CaseIterable.

Если у меня есть раздел рецептов, соответствующий CaseIterable, я могу повторно реализовать это количество разделов, чтобы вернуть количество всех случаев в этом перечислении раздела рецептов.

И таким образом я верну два, я верну количество точных секций. Это просто отлично сработает. Так что теперь, если я проверю этот рецепт шоколадного печенья без сбоев, я увижу все свои ингредиенты и свои шаги. Я проделал очень хорошую работу, я очень доволен собой.

И я могу вернуться в Организатор и отметить эту проблему как решенную, отойти от компьютера и вернуться к выпечке.

Хорошо, вы только что узнали, как можно использовать Crashes Organizer для загрузки журналов сбоев из TestFlight, открытия журнала в исходном коде и решения проблемы.Итак, что вам нужно сделать, чтобы начать? Очень просто, ваши клиенты, если они решат поделиться со сторонними разработчиками, это просто работает, их журналы сбоев загружаются автоматически.

Все, что вам нужно сделать, это войти в Xcode со своим Apple ID.

Когда вы загружаете приложение, вы должны включать символы, чтобы получить серверную символику журналов сбоев.

И откройте окно «Организатор» на вкладке «Сбои», чтобы начать просмотр этих сбоев.

Хорошо, мы рассмотрели сбои при просмотре в Организаторе.

Но если вы не распространяете через TestFlight или App Store, у вас есть еще несколько вариантов.

Появляется окно устройств.

Когда у вас подключено устройство, вы можете щелкнуть эту кнопку «Просмотр журналов», и вы увидите все журналы, которые сохранены на этом устройстве, и эти журналы обозначены символами с помощью информации о локальных символах на вашем Mac.

Когда вы запускаете свои тесты с помощью Xcode, Xcode Server или Xcode Build, пакет результатов теста будет включать в себя любые журналы сбоев, поступающие из вашего приложения, которые записываются во время выполнения этого тестового прогона, и это очень удобно, и эти журналы сбоев также символизируются.

Вы можете использовать приложение Mac Console для просмотра журналов сбоев с вашего Mac или из симулятора.

На устройстве в разделах «Настройки», «Конфиденциальность», «Аналитика», «Аналитические данные» вы можете видеть все журналы, сохраненные на диск, и ваши пользователи могут делиться журналами прямо с этого экрана. Итак, чтобы гарантировать, что символика работает, у меня есть три важных передовых метода.

Номер один, если вы используете Crashes Organizer, загрузите свои символы с приложением.

Это значение по умолчанию, это гарантирует, что символика на стороне сервера работает, это очень просто.

Номер два, обязательно сохраните архивы вашего приложения.

Ваш архив содержит копию ваших отладочных символов, вашего. Xcode использует Spotlight для поиска этих dSYM и для автоматического выполнения локальной символики, когда это необходимо.

И если вы загружаете приложение, содержащее битовый код, вы должны использовать кнопку Archives Organizer Download Debug Symbols для загрузки любых dSYM, которые поступают из компиляции битового кода на стороне магазина.

Хорошо, мы рассмотрели все инструменты, которые мы предлагаем для доступа к журналам сбоев, когда они происходят в полевых условиях.

Теперь, чтобы дать вам подробное руководство по чтению содержимого журнала сбоев, пожалуйста, тепло поприветствуйте помогающего, дружелюбного Грега Паркера.

Спасибо, Крис.

Итак, мы только что увидели, как можно использовать Xcode для поиска сбоев и их изучения с помощью инструментов Xcode в отладчике.

Но файл журнала сбоев содержит больше информации, он содержит гораздо больше информации, чем просто трассировка стека.

Часто бывает полезно просмотреть эту дополнительную информацию, чтобы отладить вашу проблему.

Так как же получить полный текст журнала сбоев? Вот наш Xcode Organizer, если мы вызовем контекстное меню, там будет кнопка «Показать в Finder».

Кнопка «Показать в Finder» вызывает текстовый файл, который мы можем открыть в приложении Console или в вашем любимом текстовом редакторе. Он выглядит примерно так.

Итак, что в этом файле, давайте посмотрим.

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

Ниже приводится причина сбоя.

Это была конкретная ошибка, особый сигнал, который операционная система отправила для завершения процесса.

Мы также можем увидеть некоторую информацию журнала, раздел информации о приложении.

В некоторых случаях в этот раздел будут входить журналы консоли. Если у вас есть необработанное исключение, оно может включать обратную трассировку исключения.

Этот раздел не всегда доступен, на устройствах iOS он часто скрыт из соображений конфиденциальности.

Но в Simulator для macOS этот раздел может содержать полезную информацию.

Ниже у нас есть стеки потоков, это были трассировки всех потоков, которые работали во время сбоя.

Один из них отмечен как аварийный поток, и у нас также есть все другие потоки, которые выполнялись в то время, когда процесс остановился.

Ниже у нас есть некоторая низкоуровневая информация, у нас есть состояние регистра потока, в котором произошел сбой, и у нас есть двоичные изображения, которые были загружены в процесс.Это исполняемый файл приложения и все остальные библиотеки.

И Xcode использует это для символизации, чтобы искать символы, файлы и информацию о номерах строк для трассировок стека. Итак, это содержимое файла журнала сбоев.

Итак, как мы это отлаживаем, как мы это читаем, на что смотрим? Начнем с причины сбоя, типа исключения.

В этом случае тип исключения — исключение неверной инструкции EXC, сигнал SIGILL был сигналом недопустимой инструкции.

Это означает, что ЦП пытался выполнить инструкцию, которая не существует или по какой-то причине недействительна, и поэтому процесс завершился.

Мы также можем посмотреть, в каком потоке произошел сбой, какой код выполнялся во время сбоя.

Здесь мы видим функцию сообщения о фатальной ошибке в среде выполнения Swift. Нет догадок относительно того, что делает функция сообщения о фатальной ошибке.

Сообщение об ошибке в этом случае включается в информацию о приложении, поэтому мы можем видеть, что напечатала среда выполнения Swift при выходе из процесса.

Итак, давайте более подробно рассмотрим трассировку стека. Мы видели функцию сообщения о фатальной ошибке, которая была вызвана функцией в нашем коде. У нас есть класс рецептов, вызываемая функция изображения, и эта функция, в свою очередь, вызывает сообщение о фатальной ошибке в результате некоторой ошибки.

Поскольку это символьная трассировка стека с полной отладочной информацией, у нас есть файл и номер строки в нашем коде с указанием того, что произошло.

Итак, мы можем взглянуть на эту строку, мы можем открыть наш проект, это RecipeImage.swift, строка 26 была той, которая была отмечена при аварии.

И те из вас, кто является опытным программистом на Swift, наверняка догадываются, почему эта строка может дать сбой.

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

У нас есть функция The UIImage Constructor, которая возвращает необязательное значение.

Если необязательное значение равно нулю, оператор принудительного развертывания остановит процесс, сгенерирует журнал сбоев и завершит работу.

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

Так что хорошо, это согласуется с кодом. У нас есть оператор принудительного развертывания в строке 26, у нас есть сообщение об ошибке в журнале сбоев, в котором говорится, что мы развернули необязательное значение.

Все это имеет смысл в качестве последовательной истории того, что вызвало эту аварию.

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

Предварительные условия и утверждения — это проверки ошибок, которые намеренно останавливают процесс при возникновении ошибки.

Некоторыми примерами этого, конечно же, являются принудительное развертывание необязательного элемента, который мы только что видели.

Среда выполнения Swift будет утверждать, что необязательный параметр не равен нулю, и откажет, если это так.

У нас есть доступ за пределы Swift.Array — еще один пример. Если вы обращаетесь к массиву, а ваш индекс выходит за пределы, среда выполнения Swift завершится ошибкой, промежуточная проверка не выполнит предварительное условие и остановит процесс.

Swift арифметическое переполнение также содержит утверждения. Если вы складываете два числа вместе и результат слишком велик для целочисленной переменной, для этого есть предварительное условие, процесс остановится.

Неперехваченные исключения часто вызываются предварительными условиями в коде.

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

Другой пример журнала сбоев — случай, когда операционная система убивает ваш процесс извне.Примером этого являются сторожевые события, такие как таймауты.

Если вашему приложению требуется слишком много времени для выполнения каких-либо действий, которые операционная система может обнаружить, завершите процесс создания определенного журнала сбоев, когда он это сделает.

Условия окружающей среды также могут вызвать остановку процесса операционной системой. Если устройство перегревается, операционная система завершает процессы, которые используют слишком много ЦП.

Если устройству не хватает памяти, операционная система завершает процессы, которые используют много памяти.

Другой случай — недействительная кодовая подпись.

Операционная система требует, чтобы этот код был подписан, и если подпись недействительна или код не подписан, операционная система завершит процесс и создаст журнал сбоев определенного типа.

Эти завершения операционной системы можно найти в окне «Устройства» в Xcode, их можно найти в консоли macOS.

Они не всегда появляются в Xcode Organizer, поэтому будьте осторожны.

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

Но давайте посмотрим на один пример, вот еще один файл журнала сбоев и еще раз, чтобы понять журнал сбоев, мы начинаем с причины сбоя.

В этом случае причина сбоя — исключение сбоя EXC с сигналом SIGKILL.

Сигнал SIGKILL обычно используется, когда операционная система хочет остановить ваш процесс.

Он отправляет сигнал SIGKILL, сигнал SIGKILL не может быть обработан, он не может быть пойман вашим процессом, он умрет в ответ на этот сигнал.

Мы также можем увидеть причину, по которой операционная система отправила сигнал в журнале сбоев.

В данном случае у нас есть причина прерывания с кодом «Плохая еда».

Если вы посмотрите технический комментарий разработчика, о котором я упоминал ранее, он расскажет, что такое плохая еда.

И у нас есть текстовое описание, в котором говорится, что исчерпанный запас реального времени составляет 19,95 секунды.

Итак, если мы объединим эту информацию с информацией в техническом примечании, это скажет нам, что наше приложение запускалось слишком долго.

У нас было 20 секунд на запуск, мы не успели за это время, операционная система убила процесс.

Ниже мы можем видеть журналы сбоев на момент остановки процесса.

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

Или, с другой стороны, может быть, этот код невиновен, и что-то ранее в процессе запуска было слишком медленным, и поэтому процесс умер.

Итак, запускайте таймауты, как их избежать.

Мы хотим, чтобы вы их избегали, тайм-ауты запуска — частая причина отклонения приложения во время проверки приложения Apple.

Так как же этого избежать? Хорошо, конечно, протестируйте свое приложение. Но есть одна загвоздка: сторожевой таймер запуска отключен в симуляторе и отключен в отладчике, поэтому, если вы проводите все свои испытания в симуляторе и отладчике, вы никогда не увидите сторожевого таймаута.

Поэтому, когда вы тестируете свое приложение, обязательно проверяйте его без отладчика.

Если вы используете приложение для MacOS, запустите приложение в Finder.

Если у вас приложение для iOS, запустите TestFlight или запустите приложение с помощью средства запуска приложений iOS.

Все это запустит ваше приложение вне отладчика, и таймауты запуска будут включены и принудительно выполнены.

Когда вы тестируете, тестируйте, конечно же, на реальном устройстве, тестируйте вне симуляторов.

И протестируйте свои устройства на более старом оборудовании, независимо от того, какое самое старое оборудование должно поддерживать ваше приложение.

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

Итак, давайте поговорим о другом классе ошибок, давайте поговорим об ошибках памяти и о том, как они выглядят в журналах сбоев.

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

Итак, давайте посмотрим на другой журнал сбоев и предупреждение о спойлере, это ошибка памяти.

Начнем снова с типа исключения.

Это исключительная ситуация неправильного доступа EXC, сигнал нарушения SEG.

Обычно это вызвано ошибкой памяти.

Исключение неправильного доступа означает одно из двух: либо мы выполняли запись в память, доступную только для чтения, либо мы читали из памяти, которая вообще не существует. Любой из них вызовет исключение плохого доступа, и процесс остановится.

Здесь мы видим адрес, к которому мы обращались во время сбоя.

Мы можем посмотреть трассировку стека, это, конечно, функция, которая выполнила плохой доступ.

Это функция выпуска objc, это часть реализации подсчета ссылок в Objective-C и некоторых объектах Swift.

Так что это снова похоже на ошибку памяти, которая вызвала ошибку.

Так какой код вызвал выпуск objc? Мы можем посмотреть оставшуюся часть трассировки стека.

У нас есть функция удаления объекта, это функция в среде выполнения Objective-C, которая используется для освобождения объектов.

Функция удаления объекта, называемая функцией ivar destroyer, в одном из наших классов, в нашем классе LoginViewController.

Функция разрушителя ivar является частью кода Swift, это функция, которая очищает свойства, очищает память ivar объекта по мере его освобождения.

Итак, это дает нам часть истории о том, что вызвало эту аварию.

Мы освобождали объект нашего класса контроллера представления входа в систему.

Этот класс в своем коде инициализации d пытался очистить свои свойства и свои ivars, и при выпуске одного из этих свойств произошел сбой. Это дает нам немного подробностей о том, что пошло не так.Можем ли мы сделать лучше, есть ли в журнале сбоев больше информации, которая расскажет нам больше о том, что произошло? Мы можем посмотреть сам недействительный адрес, иногда фактическое значение неверного адреса будет содержать полезную информацию.

И этот конкретный плохой адрес, который я могу вам сказать, выглядит как использование после бесплатного.

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

Это конкретное неверное значение очень похоже на диапазон адресов для распределителя памяти malloc, который у нас есть в этом журнале сбоев.

Итак, у нас есть диапазон адресов, который использовался распределителем памяти, и наш недопустимый адрес выглядит так, как будто он находится внутри диапазона malloc, но он был сдвинут на 4 бита, он был повернут на 4 бита.

Итак, похоже, это был повернут действительный адрес malloc.

Это подсказка от самого распределителя памяти. Позвольте мне показать вам, почему это так.

Вот как выглядел наш объект, когда он был еще действителен.

Объект начинается с поля isa, поле isa указывает на класс объекта.

Так расположены объекты Objective-C, так расположены некоторые быстрые объекты.

Итак, что делает функция выпуска objc? Он считывает поле isa, а затем обращается к полю isa, чтобы получить доступ к объекту класса и выполнить поиск методов.

Обычно, конечно, это работает, вот как это должно работать.

Что произойдет, если наш объект уже освобожден.

Когда свободная функция удаляет объект, она вставляет его в свободный список других мертвых объектов.

И он записывает свободный указатель списка на следующий объект в списке, где раньше находилось поле isa.

С одним небольшим поворотом, он не записывает указатель в это поле, а записывает повернутый указатель в это поле.

Он хочет удостовериться, что записанное там значение не является точным действительным адресом памяти, чтобы неправильное использование объекта привело к сбою.

Таким образом, когда objc release отправляется на чтение поля isa, вместо этого он получает повернутый указатель свободного списка.

Когда он обращается к повернутому указателю свободного списка, происходит сбой.

Распределитель памяти сделал это за нас, он намеренно повернул этот указатель, чтобы убедиться, что мы выйдем из строя, если попытаемся использовать его снова.

Итак, это подпись, которую мы видим в этом аварийном журнале.

У нас недопустимое поле адреса выглядит как указатель в области malloc, но вращается так же, как malloc вращает свои свободные указатели списка.

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

Так что это дополнительная деталь нашей истории. У нас есть объект, который освобождается, мы очищаем его ivars, один из этих ivar уже был освобожденным объектом, и это стало причиной нашего сбоя.

Можем ли мы сделать лучше? Можем ли мы выяснить, какой объект был выпущен с помощью выпуска objc? Обычно функция, вызывающая objc release, дает нам представление о том, что это было.

Но проблема с функцией разрушителя ivar заключается в том, что она генерируется компилятором.

Мы не писали функцию с именем ivar destroyer, что означает, что с этой точкой сбоя не связано имя файла или номер строки, мы не знаем, какое из наших свойств было освобождено в этот момент.

Вот наш класс, у нас есть три свойства в этом классе, у нас есть имя пользователя, база данных и массив представлений.

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

Мы видим +42 там, где должны были быть номер файла и строки. И +42 — это наша подсказка, потому что +42 — это смещение в ассемблерном коде функции.

Мы можем дизассемблировать функцию разрушителя ivar, посмотреть на код и выяснить, к какому свойству обращались по смещению 42.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *