Журнали аварій, створені iPhone Simulator?


96

Чи існують журнали збоїв, створені iPhone Simulator?

симулятор сильно виходить з ладу, але не залишає слідів у консолі ... журнал аварій буде корисним.


2
Я не зовсім розумію, навіщо вам потрібні журнали аварійних збоїв. Коли програма в симуляторі аварійно завершує роботу, але перед тим, як зупинити налагодження, у підказці gdb введіть "bt" для "зворотного відстеження" - ви отримаєте саме те, що відображатиметься в журналі збоїв. (не усвідомлював, що тут є питання некромантизму, пропустив посаду)
— Меттью Фредерік

3
Якщо збій стався лише тоді, коли ви не були приєднані налагоджувачем, вам знадобляться журнали.
— Ian1971

ти маєш рацію. це має сенс!
— Раптор

Ви також можете побачити журнал налагодження (включаючи вихід команд lldb) у "Навігаторі звітів" у Xcode (cmd-8). Це корисно для перегляду результатів налагодження для попередніх запусків. Якщо налагоджувач не був приєднаний, то це не буде працювати очевидно.
— Себастьєн Мартін

2
Журнал налагодження не такий, як журнал Crash, хоча обидва журнали корисні для налагодження проблеми.
— Raptor

Відповіді:


157

На консолі відображатимуться NSLog()результати програми, запущеної в симуляторі. Журнали збоїв зберігаються у файлі.

Я знайшов їх у своєму домашньому каталозі під

~/Library/Logs/DiagnosticReports/

Вони мають розширення файлу .crash

Я ще не зрозумів, як змусити їх генерувати, навіть якщо відладчик захоплює EXC_BAD_ACCESSсигнал.


Оновлення

Наразі (OSX 10.11.6) вхід .crash входить ~/Library/Logs/DiagnosticReports, коли сам емулятор виходить з ладу . Журнали для додатком збою (але емулятор пристрій все ще працює нормально), знаходяться в:

~ / Бібліотека / Журнали / CoreSimulator

За аварію існує підпапка з унікальним ідентифікатором. Сортувати за датою, щоб ваша недавня збійка стала першою підпапкою. Всередині цього почніть з переглядуstderr.log та system.log.

Також безпосередньо під CoreSimulator, див. CoreSimulator.logТа Simulator.log.


Будь-яка ідея, чому ці журнали записуються у файл, а не відображаються на консолі? Дякую за інформацію, btw.
— аква

11
Жоден з моїх повідомлень про збої в симуляторі iPhone або iPad не відображається під цим каталогом, можливо, цю відповідь потрібно оновити?
— Джастін

3
Можливо, для цього потрібне оновлення, але голосування вниз - не дуже ввічливий спосіб його заохотити.
— оххороб

2
Я знайшов звіт про збій у згаданому каталозі, але був лише один звіт, причому не найсвіжіший (тобто я продовжував пробувати кілька речей у програмі, і вона продовжувала збій). Аварії були однакові, тому це не було проблемою, але мені цікаво, чи це взагалі так?
— Samik R

10
І Джастін, і оххороб є правильними. Потрібно запустити додаток на тренажері БЕЗ Xcode та відтворити збій, щоб побачити журнали~/Library/Logs/DiagnosticReports/
— Дейв Чемберс

20

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


ОНОВЛЕННЯ:

Зокрема (на OSX 10.11.6),

Коли програма аварійно завершує роботу на емуляторі, підпапка (з унікальним ідентифікатором) додається до:

~ / Бібліотека / Журнали / CoreSimulator

В рамках цього почніть з вивчення stderr.logта system.log.

Коли емулятор сам падає, вкладена папка додається:

~ / Бібліотека / Журнали / DiagnosticReports

Не плутайте цей шлях із

/ Бібліотека / Журнали

(бракує ~старту), у якому є різні звіти про ваш комп'ютер



Здається, це стосується лише пристроїв iPhone, а не тренажерів. Виправте мене, якщо я помиляюся.
— Raptor

7
Консоль можна відкрити з симулятора, натиснувши Cmd- / або скориставшись пунктом меню Налагодження / Відкрити системний журнал ...
— lambmj

5

Ось щось, що спрацювало для мене в особливому випадку ... Моє додаток аварійно завершувало роботу із SIGKILL. Я бачив би виняток у main.m протягом декількох секунд, а потім додаток закінчував би завершувати роботу - таким чином, немає шансів отримати зворотну трасування.

Я багато шукав на тему "де симулятор зберігає свої журнали аварій", і так і не зміг знайти відповідь. Однак наступний трюк виявився досить зручним, і я зміг схопити журнал аварій на льоту:

В основному, відкрийте /Applications/Utilities/CrashReporterPrefs.app та змініть налаштування на "Developer". Це призведе до того, що CrashReporter відобразить спливаюче вікно з журналом аварій після завершення роботи програми.

Я знайшов це в розділі «Перегляд консолі симулятора iOS та журналів збоїв» у цьому документі від Apple: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125-Using_iOS_Simulator/ios_simulator_application. html


До речі, оригінальна проблема з SIGKILL , що я досліджував , виявилося, не проблема: stackoverflow.com/questions/7901262 / ...
— dana_a

Я повинен зазначити, що в програмі Application / Utilities не було додатка CrashReporterPrefs, проте я шукав його і зміг знайти додаток в іншому місці.
— Джастін

@Justin де ти його знайшов?
— Охад Шнайдер

1
Зверніть увагу, що згаданий вище інструмент можна завантажити з Xcode у наборі під назвою "Додаткові інструменти для Xcode" developer.apple.com/download/more/…
— markshiz

1

Це набагато надійніше. Лише за кілька кроків я зміг знайти номер рядка джерела та ім'я методу:

  1. CD в ​​dir, що має файли .app & .dSYM
  2. запустити /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gdb/gdb-arm-apple-darwin MyApp.app/MyApp
  3. увімкніть функцію друку asm-demangle
  4. увімкніть ім'я файлу символу друку
  5. p / a 0 × 00015c64 -> адреса, отримана, відкривши журнал аварій у програмі "Консоль" або просто двічі клацнувши файл .crash.

3
Я не зовсім розумію, навіщо вам потрібні журнали аварійних збоїв. Коли програма в тренажері виходить з ладу, але перед тим, як зупинити налагодження, в gdb-рядку введіть "bt" для "backtrace" - ви отримаєте саме те, що з’явиться в журналі аварій.
— Меттью Фредерік

Цей метод чудово працює для журналів збоїв із клієнтських телефонів.
— Гамма-Пойнт

1

Журнали аварійних збоїв відображатимуться під ~ / Бібліотека / Журнали / CrashReporter.

  • Якщо програма імітатора iPhone виходить з ладу (не додаток iPhone, що працює в рамках тренажера), тоді буде запис для iPhoneSimulator.
  • Якщо програма iPhone на симуляторі аварійно завершує роботу, журнал збоїв відображатиметься з відображуваним ім’ям програми.

Коли Xcode отримує журнали збоїв із підключеного пристрою, він зберігає їх у підпапках ~ / Бібліотека / Журнали / CrashReporter / MobileDevice


Це минуло більше року, але я бачу, як «додаток у симуляторі» аварійно завершує роботу ~ / Library / Logs / DiagnosticReports ... і виглядає так: MobileSafari_2013-03-21-155844_My-MacBook-Pro.crash
— Роб

0

Для мене це був вираз, який я додав до вікна годинника відладчика. Коли точка зупинку потрапляла, поганий вираз спричиняв сегментацію XCode.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.