Как определить, что вызывает Chrome, чтобы показать диалог «Aw, Snap»

31012
QFDev

Кто-нибудь знает, есть ли практический способ определить причину «Aw Snap!» сообщение, которое иногда появляется в Google Chrome? Есть ли в Chrome журнал ошибок, на который я могу сослаться? Я подозреваю, что эта проблема вызвана рекурсивным циклом в коде, который затем поглощает всю память? Есть ли способ, которым я могу это подтвердить?

26
Возможный дубликат ["Ой, Snap!" почему не работает chrome?] (https://superuser.com/questions/382671/aw-snap-why-doesnt-chrome-work) wizlog 6 лет назад 0
Связанный: [Как получить больше информации, когда в Chrome появляется экран «Aw Snap»?] (Https://stackoverflow.com/q/1728483/55075) kenorb 5 лет назад 0

3 ответа на вопрос

23
vinnief

Вот, смотрите объяснения здесь: для обычной регистрации в Chrome, вы можете попробовать:

Я думаю, что первый вариант поможет изолировать эту проблему. Консоль разработчика зависает, прежде чем она сможет вывести что-либо полезное. QFDev 10 лет назад 1
Я включил журнал, и после сбоя Chrome он не регистрировал никаких ошибок во время сбоя. Есть ли какие-либо ссылки, которые могли бы обеспечить понимание элементов журнала? Khadim Ali 8 лет назад 1
Это [страница chromium о logging.h] (https://chromium.googlesource.com/chromium/src/+/master/base/logging.h) то, что вы хотите? vinnief 8 лет назад 0
Не могли бы вы включить в этот ответ сокращенное содержание ссылок. Это будет устаревать, если ссылки умрут. mafu 7 лет назад 0
Консоль Javascript, как правило, в этом случае бесполезна, так как инструменты dev отключаются при падении страницы. PawnStar 6 лет назад 2
21
Benny Neugebauer

The offical Chrome Developers Twitter account linked to a website which helps you to debug the "Aw snap" pages: http://www.chromium.org/for-testers/enable-logging

The recommendation is to launch Chrome with these flags:

--enable-logging --v=1

If you do that, then you can grab a crash log from the file chrome_debug.log in Chrome's user data directory (in the parent directory of Default/) or in the binary build folder (out\Debug) if you are using a debug build.

upvote, потому что в этом посте упоминалось `--enable-logging --v = 1` задолго до того, как правка к принятому ответу добавила его. CAD bloke 7 лет назад 2
1
kenorb

Опаньки! Страница обычно связана с ошибкой ошибки сегментации процесса, которая может быть связана с ошибкой программного обеспечения . Чтобы определить причину, вы можете включить ведение журнала (как предложено в других ответах) или проанализировать обратную трассировку файла дампа ядра (в 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!» Должна следовать полная трассировка стека, включая функции и строку в файле исходного кода, где она произошла.

Похожие вопросы