Журнали аварій, створені 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.