Как вы получаете системные диагностические файлы из macOS?

20

Я пытаюсь отладить сбой (или зависание) приложения. Как получить диагностические файлы после сбоя?

Стивен
источник

Ответы:

19

Отдельные отчеты о сбоях хранятся в ~ / Library / Logs / CrashReporter, но есть общесистемный инструмент сбора журналов, называемый sysdiagnose .

Как только вы начнете испытывать проблему, удерживайте 4 клавиши управления, а затем нажмите точку "." ключ. shift+ control+ option+ command+.

Примерно через 15 секунд откроется окно Finder с выделенным файлом системной диагностики.

Как только вы начинаете испытывать проблему, удерживайте клавиши «shift» + «control» + «option» + «command» и затем нажмите точку «».  ключ.

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

Стивен
источник
Есть ли способ, чтобы получить это из командной строки?
Сидаса
1
~/Library/Logs/CrashReporterне содержит .crashфайлов. Вместо: /Library/Logs/DiagnosticReportsи~/Library/Logs/DiagnosticReports
Грэм Перрен
Ключевой аккорд для sysdiagnose будет работать только в том случае, если запускается демон stackshot. В моем ответе , то launchctlкоманда запуска демона.
Грэм Перрен
это sysdiagnoseкоманда также доступна в OS 10.6? Я не нахожу справочную страницу и which sysdiagnoseничего не возвращает в OS 10.6.8, или я должен установить ее явно?
MostlyHarmless
1
@ Martin мой ответ отредактирован, чтобы ответить на ваш вопрос.
Грэм Перрин
16

Яблочная системная диагностика

Это shell-скрипт (на 10.8 и ниже) и исполняемая программа с тем же именем на 10.9:

  • собирает общесистемную диагностическую информацию
  • является неотъемлемой частью OS X Lion и выше
  • не доступен для отдельной загрузки
  • не с открытым исходным кодом (я попросил Apple сделать это так).

Подготовка к единственному подходу к диагностике с помощью клавиатуры

В терминале выполните следующую команду.

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.stackshot.plist
  • если запрашивается пароль, введите пароль администратора для операционной системы.
  • это разовое, нет необходимости повторять команду.

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

Control- Option- Command- Shift-.

Диагностика по системе

Когда возникает проблема:

  1. используйте ключевой аккорд
  2. не менее десяти секунд ничего не трогай
  3. sysdiagnoseподождите, может быть, пять или десять минут на выполнение всех частей процедуры - просто подождите столько, сколько сможете (на экране не будет индикации прогресса)
  4. Искатель должен открыть окно до конечного результата.

исключительно

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

  1. в Finder, перейдите к /private/var/tmp
  2. искать файл или папку с именем, начинающимся с sysdiagnose_
  3. если этот файл или папка существует, переместите их в удобное место - возможно, на рабочий стол.

Советы

Без ключевого аккорда вы можете запустить sysdiagnose из командной строки (см. Ниже, страница руководства Apple). Но часто более полезно или необходимо использовать аккорд - так что будьте готовы.

Хотя я не поощряю небрежность, вы можете быть немного небрежны с Control- Option- Command- Shift- .... если вы изо всех сил пытаетесь избежать fnключа на вашем ноутбуке, не беспокойтесь; в том числе случайно не должно помешать sysdiagnose.


Человеческий анализ диагностики по системе

Подсказка: кто-то может задать отдельный вопрос об анализе результатов sysdiagnose- может быть полезен более обобщенный ответ.

Если sysdiagnose_… из /tmpобласти есть файл

Наличие sysdiagnose_….tar.gzфайла указывает на то, что все части sysdiagnoseпроцедуры завершены, и что результаты были заархивированы. При желании откройте архив - его содержимое появится в виде папки.

Если sysdiagnose_… из /tmpобласти есть папка

Наличие sysdiagnose_…папки (не .tar.gzфайла) указывает, что либо:

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

Внутри архива / папки

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

Другие файлы более ориентированы на разработчиков.

Связанный:

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


Технические и другие примечания

Stackshot (1) Страница OS OS X

sysdiagnose (1) Страница руководства по OS X

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


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

Руководствуйтесь списком журналов в консоли:

Скриншот боковой панели консоли

Ожидайте найти файлы по следующим путям:

  • ~ / Library / Logs / DiagnosticReports
  • / Library / Logs / DiagnosticReports
  • ~ / Library / Logs
  • / Library / Logs
  • / Частный / вар / журнал
Грэм Перрин
источник
2
→ Грэм: это + день: чему поучиться! Я думаю, что этот вид инструмента был бы полезен для всех системных администраторов, если бы он был открытым исходным кодом.
дан
0

Console

Чтобы найти существующие файлы диагностики или сбоев, откройте консольное приложение и найдите файлы в разделах « Отчеты пользователей» (расположены в ~/Library/Logs/DiagnosticReports) или « Системные отчеты»/Library/Logs/DiagnosticReports). Смотрите: Где я могу найти свои журналы аварий?

sysdiagnose

Согласно официальным sysdiagnoseинструкциям для macOS, вы можете вызвать sysdiagnose:

Примечание. Чтобы получить доступ к вышеуказанной ссылке, сначала необходимо войти на сайт разработчика Apple .

  • Кратко нажмите следующие клавиши одновременно:

    Command- Option- Shift- Control-Period (.)

    и ждать. sysdiagnoseПроцесс может занять 10 минут , чтобы закончить. После завершения Finder должен автоматически появиться, показывая сгенерированный файл в /private/var/tmp/(например sysdiagnose_2017.mm.dd_hh-mm-ss-0000_12345.tar.gz).

  • Запустите sysdiagnoseиз терминала, введя эту команду:

    sudo sysdiagnose
    

основные отвалы

Чтобы сгенерировать дампы ядра, смотрите: Как сгенерировать дампы ядра в macOS?

kenorb
источник