Как определить, что вызывает Chrome для отображения диалога "Aw, Snap"
Кто-нибудь знает, есть ли практический способ определить причину "Aw Snap!" сообщение, которое иногда появляется в Google Chrome? Есть ли в Chrome журнал ошибок, на который я могу сослаться? Я подозреваю, что эта проблема вызвана рекурсивным циклом в коде, который затем поглощает всю память? Есть ли способ, которым я могу это подтвердить?
5 ответов
Вот, смотрите объяснения здесь: для обычной регистрации в Chrome, вы можете попробовать:
Используйте функцию регистрации в Chrome:
Чтобы включить ведение журнала, запустите Chrome с такими флагами командной строки:
--enable-logging --v=1
Вывод будет сохранен в файл
chrome_debug.log
в каталоге данных пользователя Chrome.Расположение файла журнала может быть переопределено
CHROME_LOG_FILE
переменная окружения.Для получения полного списка флагов проверьте: переключатели командной строки Google Chrome.
Или используйте консоль javascript:
Нажмите Ctrl + Shift + J (Windows / Linux) или Cmd + Option+ J (Mac).
Официальная учетная запись Twitter для разработчиков Chrome связана с веб-сайтом, который помогает вам отлаживать страницы "Aw snap": http://www.chromium.org/for-testers/enable-logging
Рекомендуется запустить Chrome с такими флагами:
--enable-logging --v=1
Если вы это сделаете, то вы можете получить журнал сбоев из файла chrome_debug.log
в каталоге пользовательских данных Chrome (в родительском каталоге Default/
) или в папке двоичной сборки (out\Debug
) если вы используете отладочную сборку.
Ой, Snap! Страница обычно связана с ошибкой ошибки сегментации процесса, которая может быть связана с ошибкой программного обеспечения . Чтобы определить причину, вы можете включить ведение журнала (как предложено в других ответах) или проанализировать обратную трассировку файла дампа ядра (в macOS , Linux , например, Ubuntu ).
Если вы не знаете причину (например, трассировка стека состоит только из адресов памяти), вы можете создать новый тикет поддержки в системе отслеживания ошибок Chrome (или дважды проверить, существует ли он уже). При составлении отчета вы должны загрузить и включить Crash ID, перейдя в chrome://crashes/
страница, поэтому адреса памяти могут быть преобразованы в символы отладки сопровождающими Chrome.
В качестве альтернативы вы можете декодировать аварийные дампы самостоятельно.
Смотрите также: Где находится Google Chrome Crash Dump?
Чтобы упростить вышесказанное, вот основные причины сбоя страницы:
Вы нашли ошибку (на веб-сайте или в веб-браузере).
Ошибка сайта
Пример: виртуальная машина JavaScript достигла максимально выделенной памяти (сбой из-за нехватки памяти).
Чтобы проверить это, запустите DevTools и откройте вкладку Память . Если это так, код должен автоматически приостановиться непосредственно перед возможным сбоем нехватки памяти (например, проблема 810015 ). Если это так, сообщите о проблеме владельцу веб-сайта или профилируйте код JS, чтобы найти ошибку.
Ошибка браузера
- Рассмотрите возможность отключения расширений или запуска в режиме инкогнито .
- Рассмотрите возможность удаления кэшированных файлов .
- Сообщить об ошибке
- Переустановите браузер.
- Используйте другую версию Chrome, такую как Chromium , Dev или Canary channel.
- Используйте другой браузер, такой как Epic, Firefox, Opera, Brave, Waterfox, Torch или другие.
- Если проблема повторяется, вы можете попытаться заново скомпилировать исходные коды Chrome с помощью символов отладки и проанализировать трассировку стека или сообщить о ней.
Вы достигли максимального количества открытых файлов в вашей системе (см .: # 787381 ).
В Linux / Unix / macOS, чтобы проверить это, запустите:
sysctl -a | grep files
и проверьте,
kern.num_files
достиг пределаkern.maxfiles
,Если это так, увеличьте лимит, выполнив следующие команды:
sysctl -w kern.maxfiles=20480 which launchctl && launchctl limit maxfiles 65536 unlimited which ulimit && ulimit -c unlimited
Вы можете иметь некоторые вредоносные программы / вирусы, которые изменяют ваши файлы Chrome, вызывая сбой.
- У вас может быть проблема с аппаратной памятью . Так что запустите тест (например,
memtest
).
Macos
Чтобы отобразить журналы из Chrome, запустите:
log stream --level debug --predicate 'processImagePath contains "Google"'
или запустив консольное приложение, где вы также можете проверить наличие аварийных дампов (или проверить ~/Library/Logs/DiagnosticReports
). См .: Отладка "Aw, Snap!" Ошибка в Chrome
отладка
Если ничего из вышеперечисленного не поможет, вы можете рассмотреть вопрос о компиляции Chrome из исходного кода (это занимает много времени), а затем запустить его непосредственно из терминала. После этого за каждой ошибкой "Aw, Snap!" Должна следовать полная трассировка стека, включая функции и строку в файле исходного кода, где она произошла.
На Android, где у меня не было флага ведения журнала при запуске, я счел полезным записать профиль производительности в DevTools.
Он показал мне последний вызов функции javascript, сделанный до Aw Snap.
Оказалось, что document.innerHtml вызвал ошибку выделения неперехваченной строки некоторого рода на большом div...
Я веб-разработчик и не могу дождаться, пока все мои клиенты обновят Google Chrome, поэтому… Мы устранили эту проблему и нашли решение!
Кажется, это проблема CSS, которую легко решить. Кажется, что в некоторых версиях обновлений Chrome они запретили некоторым html-тегам иметь содержимое ДО и ПОСЛЕ. Один из этих тегов — Fieldset. Наша команда не нашла ничего другого, кроме удаления fieldset:before{ content: ''; ... } мгновенно решает проблему!
Если вы нашли какие-либо другие ТЕГИ, пожалуйста, разместите их здесь. Если у вас возникла та же проблема, найдите в своем CSS-коде операторы :before и :after, их будет легко исправить.
Недавно добавлено сюда:https://stackoverflow.com/questions/69161461/google-chrome-status-access-violation-error/69161462#69161462