IPhone सिम्युलेटर द्वारा उत्पन्न क्रैश लॉग?


96

क्या आईफोन सिम्युलेटर द्वारा उत्पन्न कोई क्रैश लॉग हैं?

सिम्युलेटर बहुत सारे क्रैश करता है लेकिन कंसोल में कोई निशान नहीं छोड़ रहा है ... क्रैश लॉग उपयोगी होगा।


2
मुझे समझ में नहीं आता कि आपको क्रैश लॉग की आवश्यकता क्यों है। जब सिम्युलेटर में ऐप क्रैश हो जाता है, लेकिन इससे पहले कि आप डिबगिंग को रोक दें, "बैकट्रेस" के लिए जीडीबी प्रॉम्प्ट प्रकार "बीटी" पर - आपको वही मिलेगा जो क्रैश लॉग में दिखाई देगा। (एहसास नहीं था कि यहां सवाल नेक्रोमेंसी था, पोस्ट वर्ष याद किया)
मैथ्यू फ्रेडरिक

3
यदि क्रैश केवल तब होता है जब आप डिबगर द्वारा संलग्न नहीं थे, तो आपको लॉग की आवश्यकता होगी।
Ian1971

आप सही हे। यह समझ में आता है!
रैप्टर

आप Xcode (cmd-8) में "रिपोर्ट नाविक" में डीबग लॉग (लीड कमांड के आउटपुट सहित) देख सकते हैं। यह पिछले रन के लिए डिबग आउटपुट को देखने के लिए भी उपयोगी है। यदि डिबगर संलग्न नहीं था, तो यह स्पष्ट रूप से काम नहीं करेगा।
सेबेस्टियन मार्टिन

2
डिबग लॉग क्रैश लॉग के समान नहीं है, हालांकि समस्या को डीबग करने के लिए दोनों लॉग उपयोगी हैं।
रैप्टर

जवाबों:


157

कंसोल NSLog()सिम्युलेटर में चल रहे ऐप से आउटपुट दिखाएगा । क्रैश लॉग फाइल करने के लिए सहेजे गए हैं।

मैंने अपने होम डायरेक्टरी के तहत कुछ पाया है

~/Library/Logs/DiagnosticReports/

उनके पास फ़ाइल एक्सटेंशन है .crash

कुछ मैं अभी तक पता नहीं चला है कि कैसे उन्हें उत्पन्न करने के लिए भी अगर डिबगर EXC_BAD_ACCESSसिग्नल पकड़ लेता है ।


अपडेट करें

वर्तमान में, (OSX 10.11.6), .crash लॉग इन होता है ~/Library/Logs/DiagnosticReports, जब एमुलेटर स्वयं क्रैश हो जाता हैऐप क्रैश होने के कारण लॉग (लेकिन एमुलेटर डिवाइस अभी भी ठीक चल रहा है), में हैं:

~ / Library / लॉग्स / CoreSimulator

प्रति दुर्घटना, एक अद्वितीय आईडी के साथ एक उप-फ़ोल्डर है। तिथि के अनुसार क्रमबद्ध करें, ताकि आपकी हाल की दुर्घटना पहली उप-फ़ोल्डर हो। उसके अंदर, देखकर शुरू करो stderr.logऔर system.log

इसके अलावा सीधे CoreSimulator, देखें CoreSimulator.logऔर Simulator.log


किसी भी विचार क्यों इन लॉग को सांत्वना में दिखाने के बजाय फाइल करने के लिए लिखा जाता है? जानकारी के लिए धन्यवाद, btw।
एक्वा

11
IPhone या iPad सिम्युलेटर में मेरी कोई भी क्रैश रिपोर्ट इस निर्देशिका के तहत नहीं दिखाई देती है, शायद इस उत्तर को अपडेट करने की आवश्यकता है?
जस्टिन

3
शायद इसे अपडेट की जरूरत है, लेकिन इसे प्रोत्साहित करने के लिए एक डाउन वोट बहुत विनम्र तरीका नहीं है।
ओहोरोब

2
मुझे उल्लिखित निर्देशिका में क्रैश रिपोर्ट मिली, लेकिन केवल एक रिपोर्ट थी और यह सबसे हाल की एक नहीं थी (यानी, मैं ऐप में कुछ चीजों की कोशिश करता रहा और यह दुर्घटनाग्रस्त हो गई)। क्रैश सभी समान थे, इसलिए यह कोई मुद्दा नहीं था, लेकिन मैं सोच रहा हूं कि क्या यह आम तौर पर ऐसा होता है?
सामीक आर

10
जस्टिन और ओहोरोब दोनों सही हैं। आपको एक्सकोड के बिना सिम्युलेटर पर ऐप लॉन्च करने और लॉग को देखने के लिए क्रैश को फिर से चालू करना होगा~/Library/Logs/DiagnosticReports/
डेव चेम्बर्स

20

मुझे पूरा यकीन है कि आप इसे यूटिलिटी में स्थित OS X कंसोल ऐप में देख सकते हैं। अगर मैं गलत हूं, लेकिन मुझे वोट देना सुनिश्चित करें ताकि मैं इसे हटा दूं।


अपडेट करें:

विशेष रूप से (OSX 10.11.6 के रूप में),

जब कोई एप्लिकेशन एमुलेटर पर क्रैश होता है, तो एक सबफ़ोल्डर (एक अद्वितीय आईडी के साथ) इसमें जोड़ा जाता है:

~ / Library / लॉग्स / CoreSimulator

कि भीतर, का परीक्षण करके शुरू stderr.logऔर system.log

जब एम्यूलेटर स्वयं क्रैश हो जाता है, तो एक सबफ़ोल्डर इसमें जोड़ा जाता है:

~ / Library / लॉग्स / DiagnosticReports

इस पथ को भ्रमित न करें

/ Library / लॉग्स

( ~शुरुआत में कमी ), जिसमें आपके मैक के बारे में अलग-अलग रिपोर्ट हैं।



ऐसा लगता है कि यह सिम्युलेटर के बजाय केवल iPhone उपकरणों पर लागू होता है। अगर मैं ग़लत हूं तो मेरी गलती सुझाएं।
Raptor

7
कंसोल को सिम्युलेटर से Cmd- दबाकर या डिबग / ओपन सिस्टम लॉग ... मेनू विकल्प का उपयोग करके खोला जा सकता है।
लैंबज

5

यहाँ कुछ ऐसा है जो एक विशेष मामले में मेरे लिए काम करता है ... मेरा ऐप SIGKILL के साथ क्रैश हो रहा था क्योंकि यह समाप्त हो गया था। मैं कुछ सेकंड के लिए main.m में अपवाद देखूंगा, और फिर ऐप समाप्त कर देगा - इस प्रकार, बैक ट्रेस प्राप्त करने का कोई मौका नहीं।

मैंने बहुत खोज की "जहां पर सिम्युलेटर अपने क्रैश लॉग को संग्रहीत करता है" और कभी भी उत्तर खोजने में कामयाब नहीं हुआ। हालांकि, निम्नलिखित चाल काफी काम आई और मैं फ्लाई पर क्रैश लॉग को हथियाने में सक्षम था:

मूल रूप से, खोलें / आवेदन / उपयोगिताएँ / क्रशरिपोर्टसिएरेसेप और सेटिंग को "डेवलपर" में बदलें। यह CrashReporter आपके ऐप के क्रैश होने के बाद क्रैश लॉग के साथ पॉपअप प्रदर्शित करने का कारण बनेगा।

मैं Apple से इस डॉक्टर में "देखने के आईओएस सिम्युलेटर कंसोल और क्रैश लॉग" अनुभाग में पाया: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development-workflow/125-Using_iOS_Simulator/ios_simulator_application। एचटीएमएल


वैसे, SIGKILL के साथ मूल समस्या जो मैं शोध कर रहा था वह एक गैर-मुद्दा है: stackoverflow.com/questions/7901262/…
dana_a

मुझे यह बताना चाहिए कि एप्लिकेशन / यूटिलिटीज में कोई CrashReporterPrefs ऐप नहीं था, हालांकि मैंने इसके लिए खोज की थी और ऐप को कहीं और खोजने में सक्षम था।
जस्टिन

@ जस्टिन आपको यह कहां से मिला?
ओहद श्नाइडर

1
ध्यान दें कि ऊपर उल्लिखित उपकरण Xcode से बंडल में डाउनलोड करने योग्य है, जिसे "अतिरिक्त उपकरण के लिए Xcode" कहा जाता है। developer.apple.com/download/more/…
markshiz

1

यह बहुत अधिक विश्वसनीय है। केवल कुछ चरणों में मैं स्रोत लाइन संख्या और विधि का नाम खोजने में सक्षम था:

  1. cd के पास .app और .dSYM फाइलें हैं
  2. run /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gdb/gdb-arm-apple-darwin MyApp.app/MeApp
  3. सेट प्रिंट asm-demangle पर
  4. प्रिंट प्रतीक-फ़ाइल नाम पर सेट करें
  5. p / a 0 × 00015c64 -> "कंसोल" ऐप में क्रैश लॉग को खोलकर या केवल .crash फ़ाइल को डबल क्लिक करके पता मिला।

3
मुझे समझ में नहीं आता कि आपको क्रैश लॉग की आवश्यकता क्यों है। जब सिम्युलेटर में ऐप क्रैश हो जाता है, लेकिन इससे पहले कि आप डिबगिंग को रोक दें, "बैकट्रेस" के लिए जीडीबी प्रॉम्प्ट प्रकार "बीटी" पर - आपको वही मिलेगा जो क्रैश लॉग में दिखाई देगा।
मैथ्यू फ्रेडरिक

क्लाइंट फोन से क्रैश लॉग के लिए यह तरीका बहुत अच्छा है।
गामा-प्वाइंट

1

क्रैश क्रैश लॉग ~ / लाइब्रेरी / लॉग्स / क्रैशरपुलेटर के नीचे दिखाई देंगे।

  • यदि iPhone सिम्युलेटर प्रोग्राम क्रैश होता है (सिम्युलेटर के भीतर चलने वाला iPhone ऐप नहीं), तो iPhoneSimulator के लिए एक प्रविष्टि होगी।
  • यदि सिम्युलेटर के भीतर iPhone ऐप क्रैश हो जाता है, तो क्रैश लॉग ऐप के डिस्प्ले नाम के साथ दिखाई देगा।

जब Xcode एक कनेक्टेड डिवाइस से क्रैश लॉग प्राप्त करता है, तो यह उन्हें ~ / लाइब्रेरी / लॉग / क्रैशरिपोर्ट / मोबाइलडेविस के उप-फ़ोल्डरों में संग्रहीत करता है


यह एक साल बाद खत्म हो गया है, लेकिन मैं ~ / लाइब्रेरी / लॉग्स / डायग्नोस्टिक रीपोर्ट्स में "सिम्युलेटर के भीतर ऐप" क्रैश देखता हूं ... और ऐसा दिखता है: MobileSafari_2013-03-21-155844_My-MacBook-Pro.crash
रोब

0

मेरे लिए, यह एक अभिव्यक्ति थी जिसे मैंने डिबगर वॉच विंडो में जोड़ा था। जब एक ब्रेकपॉइंट हिट हो रहा था, तो खराब अभिव्यक्ति XCode को सेगफॉल्ट का कारण बना रही थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.