प्रतीकात्मक iPhone ऐप क्रैश रिपोर्ट


433

मैं अपने iPhone ऐप की क्रैश रिपोर्ट का प्रयास करने और उसे देखने का प्रयास कर रहा हूं।

मैंने आईट्यून्स कनेक्ट से क्रैश रिपोर्ट को पुनः प्राप्त किया। मेरे पास एप्लिकेशन बाइनरी है जो मैंने ऐप स्टोर पर सबमिट किया था और मेरे पास dSYM फ़ाइल है जो बिल्ड के हिस्से के रूप में उत्पन्न हुई थी।

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

अब क्या?

मैंने कोशिश की है:

symbolicatecrash crashreport.crash myApp.app.dSYM

और यह केवल उसी टेक्स्ट को आउटपुट करता है जो क्रैश रिपोर्ट में है, जिसे प्रतीक के साथ शुरू करना है।

क्या मुझसे कुछ गलत हो रही है?


3
आप iPhone SDK पर मेरा उत्तर भी देख सकते हैं : जहाँ Symicatecrash.sh स्थित है? । मैं symbolicatecrashयह पता लगाता हूं कि कमांड को कहां ढूंढना है , इसका उपयोग कैसे करना है, और प्रतीक करने के लिए आवश्यक dSYM फाइल को कैसे खोजना है।
सैम

6
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash
logancautrell

5
मैंने एक स्क्रिप्ट बनाई है जो मदद कर सकती है: github.com/amleszk/scripts/blob/master/…
amleszk

1
यदि कोई सोच रहा है कि आप कहां से * .app, * .dSYM & क्रैश लॉग प्राप्त कर सकते हैं तो नीचे दिए गए मेरे उत्तर को देखें।
सैम बी B

3
आप इसका उल्लेख कर सकते हैं: medium.com/@Mrugraj/crash-re-symbolication-5c28d3a3a883
Mrug

जवाबों:


689

सेब से दुर्घटना रिपोर्ट का विश्लेषण करने के लिए कदम:

  1. रिलीज़ .app फ़ाइल की प्रतिलिपि करें जिसे ऐपस्टोर में धकेल दिया गया था, .dSYM फ़ाइल जो रिलीज़ के समय बनाई गई थी और क्रैश रिपोर्ट APPLE से एक FOLDER में प्राप्त हुई थी ।

  2. ओपेन टर्मिनल एप्लिकेशन और ऊपर बनाए गए फोल्डर में जाएं ( cdकमांड का उपयोग करके )

  3. भागो atos -arch armv7 -o APPNAME.app/APPNAME MEMORY_LOCATION_OF_CRASH। स्मृति स्थान वह होना चाहिए जिस पर रिपोर्ट के अनुसार ऐप क्रैश हो गया हो।

उदाहरण के लिए: atos -arch armv7 -o 'APPNAME.app'/'APPNAME' 0x0003b508

यह आपको सटीक रेखा, विधि का नाम दिखाएगा जिसके परिणामस्वरूप दुर्घटना हुई।

उदाहरण के लिए: [classname functionName:]; -510

प्रतीकात्मक IPA

अगर हम प्रतीकात्मक रूप से IPA का उपयोग करते हैं - बस extention .ipa का नाम बदलें। ज़िप के साथ, इसे निकालें तो हम एक पेलोड फ़ोल्डर प्राप्त कर सकते हैं जिसमें ऐप हैं। इस मामले में हमें .dSYM फ़ाइल की आवश्यकता नहीं है।

ध्यान दें

यह केवल तभी काम कर सकता है जब ऐप बाइनरी में प्रतीकों को छीन नहीं लिया जाए। डिफ़ॉल्ट रूप से रिलीज़ बिल्ड ने प्रतीकों को छीन लिया। हम इसे प्रोजेक्ट बिल्ड सेटिंग्स में बदल सकते हैं "Strip Debug Symbols दौरान कॉपी" NO।

अधिक विवरण इस पोस्ट को देखें


12
@NaveenShan जवाब के लिए बस एक टिप, एक वास्तविक दुनिया का उदाहरण यह करेगा atos -o myApp.app/Contents/MacOS/myApp 0x0000000100001f2c और आपको मिलेगा -[HUDWindow sizedHUDBackground] (in myApp) + 1197
loretoparisi

3
हालांकि आप किस पते का उपयोग करते हैं? लॉग में प्रत्येक फ़ंक्शन के बाद पते के दो कॉलम होते हैं, और दूसरे में एक + और किसी प्रकार का एक ऑफसेट होता है। जैसे 0x332da010 0x332d9000 + 4112.
ऑस्कर

7
@OscarGoldman दूसरा पता उदा: - 0x332da010 0x332d9000 + 4112 में। 0x332d9000 का उपयोग करें।
नवीन शान

4
इसके अलावा, यदि कोई पते के बिना उपयोग किया जाता है, तो यह आपको एक-एक करके कई स्थानों का विश्लेषण करने की अनुमति देता है।
पॉल आर्देलीनू

42
इस उत्तर के साथ कई समस्याएं हैं: 1. यह केवल तभी काम कर सकता है जब ऐप बाइनरी में प्रतीकों को छीन नहीं लिया जाए। और डिफ़ॉल्ट रूप से रिलीज बिल्ड ने उन्हें छीन लिया है। 2. भले ही प्रतीक उपलब्ध हों, यह कभी भी लाइन नंबर नहीं दिखाएगा। केवल dSYM के साथ प्रतीकात्मक रूप प्रदान करेगा। 3. आप बस स्टैक ट्रेस में दिखाए गए मेमोरी एड्रेस का उपयोग नहीं कर सकते हैं, ऐप को लोड होने वाले स्टार्ट मेमोरी एड्रेस के खिलाफ एड्रेस को सामान्य करना होगा। अधिक विवरण इस उत्तर को देखें: stackoverflow.com/questions/13574933/…
कर्नी

173

क्रैश लॉग (और अंत में सफल होने) के प्रतीक के लिए यहां इन सभी उत्तरों को पढ़ने के बाद, मुझे लगता है कि यहां कुछ बिंदु गायब हैं जो यह निर्धारित करने के लिए वास्तव में महत्वपूर्ण हैं कि क्यों प्रतीक चिन्ह का आह्वान एक प्रतीकात्मक आउटपुट का उत्पादन नहीं करता है।

दुर्घटनाग्रस्त लॉग का प्रतीक होने पर 3 संपत्तियां एक साथ मिलनी चाहिए:

  1. क्रैश लॉग फ़ाइल स्वयं (यानी example.crash), या तो एक्सकोड के आयोजक से निर्यात की जाती है या आईट्यून्स कनेक्ट से प्राप्त की जाती है।
  2. .appपैकेज (यानी example.app) है जो अपने आप क्रैश लॉग से संबंधित एप्लिकेशन बाइनरी में शामिल है। यदि आपके पास .ipaपैकेज (यानी example.ipa) है तो आप .appपैकेज को खोलकर पैकेज को निकाल सकते हैं .ipa(यानी unzip example.ipa)। बाद में .appपैकेज निकाले गए Payload/फ़ोल्डर में रहता है ।
  3. .dSYMपैकेज डिबग प्रतीक वाले (यानी example.app.dSYM)

प्रतीक चिन्ह शुरू करने से पहले आपको यह जांचना चाहिए कि क्या उन सभी कलाकृतियों का मेल है, जिसका अर्थ है कि क्रैश लॉग आपके पास बाइनरी के अंतर्गत आता है और यह कि डिबग प्रतीक उस बाइनरी के निर्माण के दौरान उत्पन्न होने वाले हैं।

प्रत्येक बाइनरी को UUID द्वारा संदर्भित किया जाता है जिसे क्रैश लॉग फ़ाइल में देखा जा सकता है:

...
Binary Images:
0xe1000 -    0x1f0fff +example armv7  <aa5e633efda8346cab92b01320043dc3> /var/mobile/Applications/9FB5D11F-42C0-42CA-A336-4B99FF97708F/example.app/example
0x2febf000 - 0x2fedffff  dyld armv7s  <4047d926f58e36b98da92ab7a93a8aaf> /usr/lib/dyld
...

इस एक्सट्रैक्ट में क्रैश लॉग एक ऐप बाइनरी इमेज से संबंधित है जिसका नाम example.app/example UUID है aa5e633efda8346cab92b01320043dc3

आप बौने पैकेज के बौडपंप के साथ यूयूआईडी की जांच कर सकते हैं:

dwarfdump --uuid example.app/example
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app/example

बाद में आपको जांचना चाहिए कि क्या डिबग प्रतीक आपके पास उस बाइनरी से संबंधित हैं:

dwarfdump --uuid example.app.dSYM
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app.dSYM/Contents/Resources/DWARF/example

इस उदाहरण में सभी संपत्तियां एक साथ मिलती हैं और आपको अपने स्टैकट्रेस का प्रतीक होना चाहिए।

symbolicatecrashस्क्रिप्ट को आगे बढ़ाना :

Xcode 8.3 में आपको स्क्रिप्ट को इनवॉइस करने में सक्षम होना चाहिए

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash -v example.crash 2> symbolicate.log

यदि यह नहीं है तो आप find . -name symbolicatecrashइसे खोजने के लिए अपनी Xcode.app निर्देशिका में चला सकते हैं ।

जैसा कि आप देख सकते हैं कि कोई और पैरामीटर नहीं दिए गए हैं। इसलिए स्क्रिप्ट को स्पॉटलाइट सर्च चलाकर अपने एप्लिकेशन को द्विआधारी और डिबग प्रतीकों को ढूंढना होगा। यह डिबग प्रतीकों को एक विशिष्ट सूचकांक के साथ खोजता है जिसे कहा जाता है com_apple_xcode_dsym_uuids। आप इस खोज को स्वयं कर सकते हैं:

mdfind 'com_apple_xcode_dsym_uuids = *'

resp।

mdfind "com_apple_xcode_dsym_uuids == AA5E633E-FDA8-346C-AB92-B01320043DC3"

पहला स्पॉटलाइट आमंत्रण आपको सभी अनुक्रमित dSYM पैकेज देता है और दूसरा आपको .dSYMविशिष्ट UUID के साथ पैकेज देता है । अगर स्पॉटलाइट को आपका .dSYMपैकेज नहीं मिला तो symbolicatecrashन ही। यदि आप यह सब सामान अपने जैसे सबफ़ोल्डर में करते हैं~/Desktop स्पॉटलाइट के सब कुछ खोजने में सक्षम होना चाहिए।

यदि symbolicatecrashआपका .dSYMपैकेज पाता है तो निम्नलिखित में से एक रेखा होनी चाहिए symbolicate.log:

@dsym_paths = ( <SOME_PATH>/example.app.dSYM/Contents/Resources/DWARF/example )

अपने .appपैकेज को खोजने के लिए निम्न की तरह एक स्पॉटलाइट सर्च को इनवैलिड किया गया है symbolicatecrash:

mdfind "kMDItemContentType == com.apple.application-bundle && (kMDItemAlternateNames == 'example.app' || kMDItemDisplayName == 'example' || kMDItemDisplayName == 'example.app')"

यदि symbolicatecrashआपका .appपैकेज पाता है, तो निम्नलिखित में से कुछ निकालने चाहिए symbolicate.log:

Number of symbols in <SOME_PATH>/example.app/example: 2209 + 19675 = 21884
Found executable <SOME_PATH>/example.app/example
-- MATCH

यदि वे सभी संसाधन इसके द्वारा पाए जाते हैं symbolicatecrashतो आपको अपने दुर्घटना लॉग के प्रतीकात्मक संस्करण को प्रिंट कर लेना चाहिए।

अगर नहीं तो आप सीधे अपने dSYM और .app फाइलों में पास हो सकते हैं।

symbolicatecrash -v --dsym <SOME_PATH>/<App_URI>.app.dSYM/<APP_NAME>.app.dsym <CRASHFILE> <SOME_OTHER_PATH>/<APP_NAME>.app/<APP_NAME> > symbolicate.log

नोट: प्रतीकात्मक बैकट्रेस टर्मिनल पर आउटपुट होगा, न कि symbolicate.log


मैं सभी फाइलों को फिर भी मैं इस मिलता है, और कोई symbolicated उत्पादन प्राप्त कर सकते हैंNo crash report version in testlog.crash at /usr/bin/symbolicatecrash line 921.
jere

1
यह वास्तव में मददगार था! मेरे मामले में .app फ़ाइल का निष्पादन योग्य नाम से अलग नाम है (मुझे नहीं पता कि क्यों, लेकिन इसे Xcode द्वारा इस तरह बनाया गया है)। XCode संग्रह में .app फ़ाइल का नाम बदलने के बाद, प्रतीकात्मक ने काम किया।
ह्रीसन

29
यह एक महान स्पष्टीकरण है और शीर्ष उत्तर IMO होना चाहिए, धन्यवाद। ध्यान दें कि DEVELOPER_DIRयदि स्क्रिप्ट इस तरह से शिकायत करती है तो आपको अपना परिवेश चर सेट करना पड़ सकता है export DEVELOPER_DIR=`xcode-select --print-path` :। मैंने इस लाइन को अपने साथ जोड़ा ~/.bash_profile। देखें stackoverflow.com/q/11682789/350761
एलियट

1
ध्यान दें कि Xcode 5 के लिए, यह करने के लिए ले जाया गया है: <PATH_TO_Xcode.app> /Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/Current/Resources/symbolicatecrash
एलियट

1
प्रतीकात्मक दुर्घटना भी कई सहायक विकल्प हैं। <SYMBOL_PATH> Additional search paths in which to search for symbol rich binaries -o | --output <OUTPUT_FILE> The symbolicated log will be written to OUTPUT_FILE. Defaults to "-" (i.e. stdout) if not specified -d | --dsym <DSYM_BUNDLE> Adds additional dSYM that will be consulted if and when a binary's UUID matches (may be specified more than once)
बेंहू

115

Xcode (3.2.2) के नवीनतम संस्करण के साथ, आप किसी भी क्रैश रिपोर्ट को Xcode ऑर्गनाइज़र के डिवाइस लॉग अनुभाग में ड्रैग और ड्रॉप कर सकते हैं और वे स्वचालित रूप से आपके लिए प्रतीक के रूप में दिखाई देंगे। मुझे लगता है कि यह सबसे अच्छा काम करता है अगर आपने बिल्ड एंड आर्काइव (एक्सकोड 3.2.2 का हिस्सा) का उपयोग करके ऐप का वह संस्करण बनाया है


3
यह बस एक नए स्थापित पर Xcode4 के साथ काम नहीं कर रहा है। एक नया बग लगता है :(
एडम

1
मुझे यकीन नहीं है कि अगर यह वही समस्या है जो आपके पास है, लेकिन किसी ने प्रतीकात्मक स्क्रिप्ट github.com/nskboy/symbolicatecrash-fix YMMV :) को पैच कर दिया है
एलन रोजर्स

2
यह टिप Xcode 4.2 के साथ काम करता है। ऑर्गनाइज़र के डिवाइस लॉग में क्रैशलॉग्स रखें। संयोजक को पुनः आरंभ करें दुर्घटनाग्रस्त लॉग का प्रतीक मिलेगा !!! धन्यवाद।
harshit2811

2
क्रैश लॉग पाने के लिए मैंने दूसरे कंप्यूटर से एक संग्रह फ़ाइल आयात करते समय यह मुझसे काम नहीं किया। :( इस कारण से मुझे मैन्युअल रूप से फाइल का प्रतीक बनाना पड़ा। आप यहाँ पर सिम्बॉलिक करने के लिए कदम उठा सकते हैं: iPhone SDK: जहाँ प्रतीक चिन्ह है? वह कहाँ स्थित है?
सैम

3
आईट्यून्स कनेक्ट से डाउनलोड की गई क्रैश रिपोर्ट के साथ मेरे लिए काम न करें।
दिमित्री

72

मैंने निम्न चरणों का उपयोग करके, यह सफलतापूर्वक किया।

चरण 1: डेस्कटॉप में एक फ़ोल्डर बनाएं, मैं इसे "क्रैशरपोर्ट" का नाम देता हूं और इसमें तीन फाइलें ("MYApp.app", "MyApp.app.dSYM", "MYApp_2013-07-18.crash") डाल देता हूं।

चरण 2: खोजक खोलें और एप्लिकेशन पर जाएं, जहां आपको Xcode आवेदन मिलेगा, इस पर राइट क्लिक करें और "शो पैकेज सामग्री" पर क्लिक करें, इसके बाद इस सरल पथ का अनुसरण करें। " सामग्री- > डेवलपर- > प्लेटफार्म-> iPhoneOS.platform-> डेवलपर- > पुस्तकालय-> PrivateFrameworks- > DTDeviceKit.framework -> संस्करण- > A-> संसाधन"

या

" सामग्री- > डेवलपर- > प्लेटफार्म-> iPhoneOS.platform-> डेवलपर- > पुस्तकालय-> PrivateFrameworks- > DTDeviceKitBase.framework -> संस्करण- > A- संसाधन"

या

Xcode 6 और पथ के ऊपर के लिए Application / Xcode.app / Contents / SharedFrameworks / DTDeviceKitBase.framework / संस्करणों / A / Resources

जहाँ आपको "प्रतीक चिन्ह" फ़ाइल मिलती है, इसे कॉपी करें और "क्रैशरपोर्ट" फ़ोल्डर में पेस्ट करें।

चरण 3: टर्मिनल लॉन्च करें, इन 3 कमांड को चलाएं

  1. सीडी / उपयोगकर्ता / mac38 / डेस्कटॉप / क्रैशपोर्ट और एंटर बटन दबाएं

  2. DEVELOPER_DIR = "/ Applications / Xcode.app / Contents / Developer" निर्यात करें और Enter दबाएं

  3. ./symbolicatecrash -A -v MYApp_2013-07-18.crash MyApp.app.dSYM और एंटर दबाएं अब इसका क्या हुआ .. (नोट: संस्करण 6.4 के आसपास या बाद में -एक विकल्प नहीं है - बस इसे बाहर छोड़ दें)।

3
DTServiceKit के लिए एप्लीकेशन / Xcode.app / Contents / SharedFrameworks में देखें
रयान

3
थैंक यू ... 9 अप्रैल 2015 तक, यह वही है जो मेरे लिए त्रुटिपूर्ण है। एक बात, यह है कि मैं Unknown option: Aप्रतीकात्मकता के लिए मिला , लेकिन इस प्रक्रिया को वैसे भी चलाया
मैट फियोका

1
काश, मैं इस उत्तर को एक हजार अंक दे पाता। इस विषय पर बहुत सारे कैसे-कैसे हैं ... लेकिन यह वह है जो सबसे निचले स्तर पर काम करता है इसलिए यह हमेशा काम करता है। यह सभी चरणों को हिट करने के लिए पीछे का दर्द है, लेकिन जब बाकी सब विफल हो जाता है, तो यह काम करता है।
चाड रॉबिन्सन

35

XCode का उपयोग करके क्रैश रिपोर्ट को स्वचालित रूप से दर्शाने के चरण:

XCODE 9 के लिए अद्यतन

  1. किसी भी iOS डिवाइस को अपने Mac से कनेक्ट करें (हाँ एक शारीरिक एक, हाँ मुझे पता है कि यह बेवकूफी है)

  2. "विंडो" मेनू से "डिवाइस" चुनें यहां छवि विवरण दर्ज करें

  3. बाईं ओर अपने डिवाइस पर क्लिक करें और दाईं ओर डिवाइस लॉग देखें यहां छवि विवरण दर्ज करें

  4. रुको। इसे दिखाने में एक मिनट का समय लग सकता है। हो सकता है कि कर Command-Aतो Deleteयह तेज़ हो जाएगी।

  5. क्रिटिकल अप्रलेखित कदम: क्रैश रिपोर्ट है कि आप से iTunesConnect से मिला नाम बदलने.txtके लिए विस्तार.crashविस्तार

  6. क्रैश रिपोर्ट को बाईं ओर उस क्षेत्र में खींचें यहां छवि विवरण दर्ज करें

और फिर Xcode क्रैश रिपोर्ट का प्रतीक होगा और परिणाम प्रदर्शित करेगा।

स्रोत: https://developer.apple.com/library/ios/technotes/tn2151/_index.html


1
यह आधिकारिक एप्पल प्रक्रिया है। उत्तर होना चाहिए।
जियामी

2
धन्यवाद, मैं अब तस्वीरें जोड़ रहा हूं। इसके अलावा सुपर अनौपचारिक कदम भी शामिल है। मैंने सोचा कि लाल पाठ के बारे में सोचें और इसे वहां पर लागू करें ताकि यह वास्तव में बाहर खड़ा हो सके। फिर मैंने उस बारे में सोचना बंद कर दिया।
विलियम एंट्रीकेन

1
धन्यवाद! अन्य उत्तरों में से कोई भी वास्तव में यह नहीं कहता है कि आपके द्वारा उपयोग किए जाने वाले डिवाइस को क्रैश होने पर डिवाइस (या यहां तक ​​कि डिवाइस प्रकार) होने की आवश्यकता नहीं है।
गैलेक्टिकुह

त्वरित नोट, क्योंकि मेरे लिए यह फिर से प्रतीक नहीं होगा। मुझे ऑर्गनाइजर भी खोलना था, आर्काइव्स में बिल्ड पर क्लिक करें, डीबग सिंबल डाउनलोड करें पर क्लिक करें। तब मैं डिवाइस लॉग दृश्य में पुनः-प्रतीक कर सकता था। यह अस्वीकृत समीक्षा के बाद Apple से डाउनलोड किए गए क्रैश लॉग के लिए था।
gregthegeek

28

मैं अपने ऐप्स में Airbrake का उपयोग करता हूं, जो रिमोट एरर लॉगिंग का काफी अच्छा काम करता है।

यदि बैकट्रेस को इसकी आवश्यकता है, तो मैं उन्हें एटोस के साथ कैसे प्रतीक देता हूं:

  1. Xcode (4.2) में ऑर्गनाइज़र के पास जाएँ, उस आर्काइव पर राइट क्लिक करें जहाँ से .ipa फाइल जेनरेट हुई थी।

  2. टर्मिनल में, उदाहरण के लिए xcarchive में cdMyCoolApp 10-27-11 1.30 PM.xcarchive

  3. निम्नलिखित दर्ज करें atos -arch armv7 -o 'MyCoolApp.app'/'MyCoolApp' (एकल उद्धरण मत भूलना)

  4. मैं उस कॉल में अपना प्रतीक शामिल नहीं करता हूं। आपको जो मिलता है वह एक खाली लाइन पर एक ब्लॉक कर्सर है।

  5. फिर मैं उस ब्लॉक कर्सर पर अपना प्रतीक कोड कॉपी / पेस्ट करता हूं और एंटर दबाता हूं। आप कुछ इस तरह देखेंगे:

    -[MyCoolVC dealloc] (in MyCoolApp) (MyCoolVC.m:34)

  6. आप एक ब्लॉक कर्सर पर वापस आ गए हैं और आप अन्य प्रतीकों में पेस्ट कर सकते हैं।

पहले बिट में फिर से प्रवेश किए बिना आपके बैकट्रेस एक आइटम के माध्यम से जाने में सक्षम होना एक अच्छा समय बचाने वाला है।

का आनंद लें!


28

मैंने प्रतीकात्मक दुर्घटना को चलाने से पहले dsym, ऐप बंडल और क्रैश लॉग को एक ही डायरेक्टरी में एक साथ रखा

फिर मैं चलित प्रतीक को सरल बनाने के लिए अपने .profile में परिभाषित इस फ़ंक्शन का उपयोग करता हूं:

function desym
{
    /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash -A -v $1 | more
}

वहां जोड़े गए तर्क आपकी मदद कर सकते हैं।

आप सुनिश्चित कर सकते हैं कि स्पॉटलाइट "कमांड को चलाकर" आपके डिसम फाइल को "देखता है":

mdfind 'com_apple_xcode_dsym_uuids = *'

आप अपनी निर्देशिका में dsym के लिए देखो।

नोट: नवीनतम Xcode के रूप में, अब एक डेवलपर निर्देशिका नहीं है। आप इस उपयोगिता को यहां पा सकते हैं:

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Vers आयनों / ए / संसाधन / symbolicatecrash


1
मैंने mdfind आउटपुट को देखा, और dSYM फ़ाइल को निश्चित रूप से स्पॉटलाइट द्वारा देखा जा सकता है। हालाँकि, प्रतीकात्मक स्क्रिप्ट अभी भी क्रैश रिपोर्ट से अलग कुछ भी आउटपुट नहीं करता है। यहां तक ​​कि आपके द्वारा प्रदान किए गए तर्कों का उपयोग करते हुए।
जसारीन

स्क्रिप्ट को शुरुआत में कुछ चेतावनी पाठ का उत्पादन करना चाहिए अगर यह डीएसआईएम नहीं पा सकता है - क्या आप इसके लिए देख सकते हैं और देख सकते हैं कि यह क्या कहता है?
केंडल हेल्मसटेटर गेलनर

इसके अलावा, "जोड़ने का प्रयास करें।" आदेश के बाद, इसलिए यह "प्रतीक-ए-वी MyApp.crashlog" होगा। । अगर यह पहले से ही ऐसा नहीं कर रहा है तो यह वर्तमान निर्देशिका में देखने के लिए मजबूर करता है।
केंडल हेल्मसटेटर गेलनर

अर्थ "निष्पादित नहीं कर सकता" / usr / bin / xcode-select ": /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug/ins/iPhoneRemoteDevice.xcodeplugin/Contents/Resource/ पर ऐसी कोई फ़ाइल या निर्देशिका नहीं प्रतीकात्मक रेखा 49। "
bpapa

ओह, जाहिरा तौर पर उस stackoverflow.com/questions/1859852/…
bpapa

21

बस 6.1.1 के लिए एक सरल और अद्यतन जवाब।

कदम

1.Xcode> विंडो> उपकरण।

2. डिवाइस डिवाइस की सूची से डिवाइस का चयन करें।

3. डिवाइस देखें लॉग का चयन करें।

4. सभी लॉग अनुभाग का उपयोग कर आप सीधे रिपोर्ट ड्रॉप कर सकते हैं। क्रश

5.Xcode स्वचालित रूप से आपके लिए क्रैश रिपोर्ट का प्रतीक होगा।

6. आप अपनी क्रैश रिपोर्ट में उल्लिखित तिथि / समय के साथ उसकी तिथि / समय का मिलान करके प्रतीकात्मक दुर्घटना रिपोर्ट पा सकते हैं।


3
क्रैश रिपोर्ट जो मैंने Apple रिज़ॉल्यूशन सेंटर से डाउनलोड की है, उसमें आमतौर पर .txt का विस्तार होता है। उन्हें .crash का नाम बदलना याद रखें, अन्यथा डिवाइस लॉग उन्हें जोड़ने से मना कर सकते हैं। मेरे वर्तमान XCode 6.3.1 के लिए अच्छी तरह से काम करें
टोनी

3
यह आधिकारिक एप्पल प्रक्रिया है। उत्तर होना चाहिए। Apple लिंक: तकनीकी नोट TN2151: iOS एप्लिकेशन क्रैश रिपोर्ट को समझना और उसका विश्लेषण करना
Giammy

अगर Apple / iTunesConnect से क्रैश हुआ तो हम यह कैसे करेंगे? तो दूसरे शब्दों में, हम वास्तव में नहीं जानते हैं या डिवाइस है कि दुर्घटना हुई थी?
गैलेक्टिकुह

14

भले ही अब मैं कुछ वर्षों से ऐप विकसित कर रहा था, यह मेरी पहली बार एक द्विआधारी डिबगिंग थी और मुझे ऐसा महसूस हुआ कि पूरी एनओबी यह पता लगा रही है कि सभी फाइलें कहां हैं। कहां है * .app * .dSYM और क्रैश लॉग? इसका पता लगाने के लिए मुझे कई पोस्ट पढ़ने पड़े। चित्र एक हजार शब्दों के लायक है और मुझे आशा है कि यह पोस्ट भविष्य में किसी और की मदद करेगी।

1- सबसे पहले itunesconnect पर जाएं और अपने क्रैश लॉग डाउनलोड करें। ध्यान दें: क्या अधिकांश मामलों में आपको कुछ मिल सकता है जैसे "रिपोर्ट दिखाने के लिए बहुत कम रिपोर्ट प्रस्तुत की गई हैं।" मूल रूप से पर्याप्त उपयोगकर्ताओं ने Apple को क्रैश लॉग रिपोर्ट सबमिट नहीं की है, उस स्थिति में आप उस बिंदु पर कुछ भी नहीं कर सकते हैं।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

2- अब अगर आपने अपना कोड नहीं बदला था क्योंकि आपने अपना बाइनरी इसे Apple को जमा कर दिया था, तो उस प्रोजेक्ट के लिए Xcode लॉन्च करें और प्रोडक्ट -> आर्काइव करें। अन्यथा बस अपने नवीनतम प्रस्तुत बाइनरी और उस पर राइट क्लिक करें।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


8

Xcode 4.2.1 में, ऑर्गनाइज़र खोलें , फिर लाइब्रेरी / डिवाइस लॉग पर जाएं और अपनी .crash फ़ाइल को क्रैश लॉग की सूची में खींचें। यह कुछ सेकंड के बाद आपके लिए प्रतीक होगा।

ध्यान दें कि आपको Xcode के उसी उदाहरण का उपयोग करना होगा जो मूल बिल्ड पर संग्रहीत किया गया था (यानी ऑर्गनाइज़र में आपके बिल्ड के लिए संग्रह मौजूद होना चाहिए )।


8

Xcode 4 का उपयोग करना, कार्य और भी सरल है:

  • आयोजक खोलें ,
  • लाइब्रेरी पर क्लिक करें | डिवाइस बाएं कॉलम में लॉग इन करें
  • स्क्रीन के नीचे " आयात " बटन पर क्लिक करें ...

और voilà। लॉग फ़ाइल आयात की गई है और स्वचालित रूप से आपके लिए प्रतीक है। बशर्ते आपने पहले Xcode -> उत्पाद -> संग्रह का उपयोग करके निर्माण को संग्रहीत किया ।


1
काफी अजीब है, आयात का कोई प्रभाव नहीं है। पुटपिंग .app, .dSYM और .क्रैश और फिर सिम्पटिकेट को ऑन करना .crash फाइल (बिना किसी अतिरिक्त तर्क के) हालांकि काम किया (XCode 4)
रूसी

7

जादुई Xcode आयोजक मेरे app का प्रतीक के बारे में जादुई नहीं है। मुझे क्रैश रिपोर्ट के लिए बिल्कुल भी कोई प्रतीक नहीं मिला कि मैं ऐप्पल से एक असफल ऐप सबमिशन से वापस आ गया।

मैंने कमांड-लाइन का उपयोग करने की कोशिश की, क्रैश रिपोर्ट को एक ही फ़ोल्डर में .app फ़ाइल (जो मैंने स्टोर पर सबमिट की गई है) और .dSYM फ़ाइल के रूप में डाल दिया:

$ symbolicatecrash "My App_date_blahblah-iPhone.crash" "My App.app"

यह केवल मेरे ऐप के लिए प्रतीक प्रदान करता है न कि कोर फाउंडेशन कोड, लेकिन यह उस संख्या डंप से बेहतर था जो ऑर्गनाइज़र मुझे दे रहा है और मेरे ऐप के क्रैश का पता लगाने और उसे ठीक करने के लिए पर्याप्त था। अगर किसी को पता है कि फाउंडेशन प्रतीकों को प्राप्त करने के लिए इसे कैसे बढ़ाया जाए तो इसकी सराहना की जाएगी।


कोर फाउंडेशन dSYM के लिए, (एक (चीनी हो सकता है) लड़का बाहर dSYM ने अपने साझा Google ड्राइव पर अपलोड किया था, बस इसे डाउनलोड करें और "डिवाइस समर्थित" फ़ोल्डर में फेंक दें और इसे हल किया जाएगा। github.com/Zuikyo/iOS-System-Sbolbols
harunaga

6

मेरे मामले में, मैं मेल से सीधे आयोजक को क्रैश रिपोर्ट खींच रहा था। किसी कारण से, दुर्घटना की रिपोर्ट को प्रतीकात्मक होने से रोका (मुझे पता है कि मुझे क्यों अच्छा लगेगा)।

क्रैश रिपोर्ट्स को पहले डेस्कटॉप पर कॉपी करना, और फिर उन्हें वहां से ऑर्गेनाइज़र तक खींचकर ले जाना उन्हें सही ढंग से सिंबल देता है।

बहुत विशिष्ट मामला, मुझे पता है। लेकिन सोचा था कि मैं सिर्फ मामले में साझा करूंगा।


मुझे लगता है कि यह स्पॉटलाइट के साथ कुछ करना हो सकता है। क्या कोई ऐसा स्थान है जहाँ आयोजक आपके लॉग को स्पॉटलाइट द्वारा अनुक्रमित नहीं करता है?
जसारीन

4

यहाँ एक और मुद्दा है जो मेरे पास प्रतीक चिन्ह के साथ है - यह उन ऐप्स के साथ काम नहीं करेगा जिनके पास अपने बंडल में रिक्त स्थान हैं (यानी 'App.app.app)'। नोट मुझे नहीं लगता कि जमा करते समय आपके नाम में जगह हो सकती है, इसलिए आपको इन्हें वैसे भी हटा देना चाहिए, लेकिन अगर आपके पास पहले से क्रैश हैं, तो विश्लेषण करने की आवश्यकता है, पैच प्रतीकपट्रैश (4.3 जीएम) जैसे:

240c240
<         my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == $exec_name.app\"";
---
>         my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == '$exec_name.app'\"";
251c251
<             my $cmd = "find \"$archive_path/Products\" -name $exec_name.app";
---
>             my $cmd = "find \"$archive_path/Products\" -name \"$exec_name.app\"";

इसके लायक होने के लिए, मैंने इस पर एक rdar भरा और इसे [redacted] में ठीक किया
Stuart

4

Airbrake का उपयोग करने वालों के लिए, ऊपर एक ठोस प्रतिक्रिया है, लेकिन यह मेरे लिए बिना काम नहीं करेगा:

कुछ स्मृति पतों के लिए काम करता है लेकिन दूसरों के लिए नहीं, निश्चित नहीं कि क्यों ...

  • डेस्कटॉप पर या जहाँ भी नया डायर बनाएँ
  • Xcode आयोजक में प्रश्न में संग्रह ढूंढें
  • खोजक में प्रकट करने के लिए डबल टैप करें
  • बंडल सामग्री दिखाने के लिए डबल टैप करें
  • नई dir में .dSYM फ़ाइल और .app फ़ाइल की प्रतिलिपि बनाएँ
  • नई dir में cd
  • इस कमांड को चलाएँ: atos -arch armv7 -o 'Vimeo.app' / 'Vimeo'
  • टर्मिनल एक इंटरैक्टिव कदम दर्ज करेगा
  • मेमोरी एड्रेस और हिट एंटर में पेस्ट करें, यह मेथड नेम और लाइन नंबर को आउटपुट करेगा
  • वैकल्पिक रूप से, यह कमांड दर्ज करें: atos -arch armv7 -o 'Vimeo.app' / 'Vimeo' केवल एक पते के लिए जानकारी प्राप्त करने के लिए

4

मेरे लिए काम करने वाला संयोजन था:

  1. उस निर्देशिका में dSYM फ़ाइल की प्रतिलिपि बनाएँ जहाँ क्रैश रिपोर्ट थी
  2. ऐप युक्त IPa फ़ाइल को अनज़िप करें ('unzip MyApp.ipa')
  3. क्रैश रिपोर्ट और सिंबल फ़ाइल ("MyApp.app/MyApp" की तरह कुछ) के रूप में एक ही फ़ोल्डर में परिणामस्वरूप विस्फोट पेलोड से आवेदन बाइनरी कॉपी करें
  4. Xcode के आयोजक के भीतर से क्रैश रिपोर्ट को आयात या पुनः-प्रतीक करें

Atos का उपयोग करके मैं क्रैश रिपोर्ट में मौजूद पते और ऑफसेट के साथ सही प्रतीक जानकारी को हल करने में सक्षम नहीं था। जब मैंने ऐसा किया, तो मुझे कुछ और सार्थक दिखाई दे रहा है, और यह एक वैध स्टैक ट्रेस लगता है।


3

इसे ठीक से चलाने के लिए मुझे प्रतीकपटक स्क्रिप्ट की बहुत सी हैकिंग करनी पड़ी।

जहाँ तक मैं बता सकता हूँ, अभी प्रतीक चिन्ह को .app की आवश्यकता है। .App का पता लगाने के लिए यह .dsym का उपयोग करेगा, लेकिन यह प्रतीकों को खोजने के लिए dsym का उपयोग नहीं करेगा।

इन चिथड़ों को आज़माने से पहले आपको अपने प्रतीक चिन्ह की एक प्रति बनानी चाहिए जो इसे dsym में दिखाएगी:

GetSymbolPathFor_dsymUuid फ़ंक्शन में पंक्ति 212 के आसपास

212     my @executablePath = grep { -e && ! -d } glob("$dsymdir" . "/Contents/Resources/DWARF/" . $executable);

मैचयूयूआईडी फ़ंक्शन में लगभग 265 रेखा

265             return 1;

1

यह सरल है, बहुत सारी खोज करने के बाद मैंने स्पष्ट कदमों को पूरी दुर्घटना लॉग फाइल का प्रतीक पाया।

  • एक फ़ोल्डर में .app, crash_report और DSYM फ़ाइलों की प्रतिलिपि बनाएँ।
  • डिवाइस को xcode से कनेक्ट करें
  • फिर विंडो पर जाएं -> डिवाइस चुनें -> डिवाइस लॉग देखें
  • फिर इस डिवाइस को चुनें, सभी लॉग को हटा दें।
  • डिवाइस लॉग सेक्शन पर अपना क्रैश खींचें और छोड़ें। यह स्वचालित रूप से दुर्घटना का प्रतीक होगा। बस रिपोर्ट पर राइट क्लिक करें और इसे निर्यात करें।

खुश कोडिंग,
रियाज


सबसे अच्छा लघु और मीठा ans, इस ans में लिखे गए प्रत्येक चरण का पालन करें। डेवलपर .apple.com/library/content/technotes/tn2151/… इस लिंक का अनुसरण करते हुए बिना सिले और पूरी तरह से चिन्हित किए गए अंतर का पता लगाएं।
निनाद कांबली

1

मैं एक स्क्रिप्ट पसंद करता हूं जो मेरे सभी क्रैश लॉग का प्रतीक होगा।

पूर्व शर्त

एक फ़ोल्डर बनाएं और वहां 4 चीजें रखें:

  1. symbolicatecrash पर्ल स्क्रिप्ट - ऐसे कई SO उत्तर हैं जो इसे स्थान बताते हैं

  2. बिल्ड का संग्रह जो क्रैश से मेल खाता है (Xcode ऑर्गनाइज़र से सरल है Show in Finderऔर कॉपी करें) [मुझे यकीन नहीं है कि यह आवश्यक नहीं है]

  3. सभी xccrashpointपैकेज - (Xcode ऑर्गनाइज़र से। Show in Finder, आप डायरेक्टरी के सभी पैकेजों की नकल कर सकते हैं, या आप जिस एकल xccrashpoint का प्रतीक चाहते हैं)

  4. उस लघु स्क्रिप्ट को निर्देशिका में जोड़ें:

    #!/bin/sh
    
    echo "cleaning old crashes from directory"
    rm -P *.crash
    rm -P *.xccrashpoint
    rm -r allCrashes
    echo "removed!"
    echo ""
    echo "--- START ---"
    echo ""
    
    mkdir allCrashes
    mkdir symboledCrashes
    find `ls -d *.xccrashpoint` -name "*.crash" -print -exec cp {} allCrashes/ \;
    
    cd allCrashes
    for crash in *.crash; do
        ../symbolicatecrash $crash > ../symboledCrashes/V$crash
    done
    cd ..
    
    echo ""
    echo "--- DONE ---"
    echo ""

लिपी

जब आप स्क्रिप्ट चलाते हैं, तो आपको 2 निर्देशिकाएं मिलेंगी।

  1. allCrashes- सभी xccrashpointवसीयत से सभी दुर्घटनाओं ।

  2. symboledCrashes - एक ही दुर्घटनाओं लेकिन अब सभी प्रतीकों के साथ।

  3. स्क्रिप्ट चलाने से पहले आपको पुराने क्रैश से निर्देशिका को साफ़ करने की आवश्यकता नहीं है। यह अपने आप साफ हो जाएगा। सौभाग्य!


1

मुझे पता चला कि अधिकांश प्रस्तावित विकल्प नवीनतम XCode (Xcode 10 के साथ परीक्षण) में काम नहीं करते थे। उदाहरण के लिए, Xcode -> ऑर्गनाइज़र -> डिवाइस लॉग -व्यू में मेरे पास कोई लक ड्रैग-ड्रॉपिंग नहीं थी।

मैं प्रतीकात्मक उपकरण https://github.com/agentsim/Symbolicator का उपयोग करने की सलाह देता हूं

  • क्लोन क्लोन सिम्बॉलिकेटर रिपॉजिटरी और संकलन और एक्सकोड के साथ चलाएं
  • कॉपी .crash फ़ाइल (ascii फ़ाइल, फ़ाइल की भीख में स्टैक ट्रेस के साथ) और एक ही अस्थायी फ़ोल्डर में रिलीज को क्रैश करने का।
  • Dock में Symbolicator आइकन पर .crash फ़ाइल को खींचें और छोड़ें
  • 5-30 सेकंड में प्रतीकात्मक क्रैश फाइल को एक ही फ़ोल्डर में उत्पादित किया जाता है। क्रश और .xarchive हैं

0

क्रैश का प्रतीक करने के लिए, स्पॉटलाइट को .dSYM फ़ाइल को खोजने में सक्षम होना चाहिए जो उसी समय उत्पन्न हुई थी जब आप Apple को प्रस्तुत किया गया बाइनरी था। चूँकि इसमें प्रतीक की जानकारी है, यदि यह उपलब्ध नहीं है, तो आप भाग्य से बाहर रहेंगे।


यदि आप प्रश्न पढ़ते हैं, तो मैंने कहा कि मैंने मूल dSYM फ़ाइल को सहेज लिया है जो उसी समय उत्पन्न हुई थी जब बाइनरी सबमिट की गई थी।
जसारीन

0

मुझे इस तथ्य के बारे में कुछ समझ में नहीं आया कि यहां कुछ भी नहीं है "बस काम" इसलिए मैंने कुछ जांच की और परिणाम यह है:

सेट अप करें: QuincyKit बैक एंड जो रिपोर्ट प्राप्त करता है। कोई प्रतीक नहीं बनाया गया है क्योंकि मैं यह भी पता लगाने के लिए शुरू नहीं कर सकता कि वे क्या सुझाव दे रहे थे मैं इसे काम करने के लिए करता हूं।

फिक्स: ऑनलाइन सर्वर से क्रैश रिपोर्ट डाउनलोड करें। उन्हें 'क्रैश' कहा जाता है और डिफ़ॉल्ट रूप से ~ / डाउनलोड / फ़ोल्डर में जाते हैं। इसे ध्यान में रखते हुए, यह स्क्रिप्ट "सही काम करेगी" और क्रैश रिपोर्ट Xcode (ऑर्गनाइज़र, डिवाइस लॉग्स) में जाएगी और सिंबल किया जाएगा।

लिपी:

#!/bin/bash
# Copy crash reports so that they appear in device logs in Organizer in Xcode

if [ ! -e ~/Downloads/crash ]; then 
   echo "Download a crash report and save it as $HOME/Downloads/crash before running this script."
   exit 1
fi

cd ~/Library/Logs/CrashReporter/MobileDevice/
mkdir -p actx # add crash report to xcode abbreviated
cd actx

datestr=`date "+%Y-%m-%d-%H%M%S"`

mv ~/Downloads/crash "actx-app_"$datestr"_actx.crash"

यदि आप QuincyKit / PLCR का उपयोग करते हैं, तो दो चीजों को करके आप Xcode ऑर्गनाइज़र में ड्रैग और ड्रॉप कर सकते हैं।

सबसे पहले, आपको रिमोट स्क्रिप्ट एडमिन / एक्शनएपी। एफपी ~ लाइन 202 को एडिट करना होगा। यह टाइमस्टैम्प को सही नहीं लगता है, इसलिए फाइल 'क्रैश' नाम के साथ समाप्त होती है जिसे Xcode पहचान नहीं पाता है (यह कुछ चाहता है बिंदी दुर्घटना):

header('Content-Disposition: attachment; filename="crash'.$timestamp.'.crash"');

दूसरे, QuincyKit BWCrashReportTextFormatter.m ~ लाइन 176, परिवर्तन में आईओएस पक्ष में @"[TODO]"करने के लिए @"TODO"चारों ओर बुरा वर्ण प्राप्त करने के लिए।


0

यदि आप OSX 10.9 पर चल रहे हैं या बाद में आपको चलाने की आवश्यकता हो सकती है, तो प्रतिनियुक्त किया जा रहा है

xcrun atos

चेतावनी: / usr / bin / atos बढ़ रहा है और भविष्य के OS X रिलीज़ से हटा दिया जाएगा। यह अब Xcode डेवलपर टूल के माध्यम से उपलब्ध है:xcrun atos


लगता है Apple टूल की प्रत्येक रिलीज़ के साथ DWARF प्रारूप को मॉर्फ करने की अनुमति दे रहा है (समझ में आता है, विशेष रूप से स्विफ्ट के आगमन के साथ) इसलिए वे इसे टूल डिस्ट्रो में स्थानांतरित कर रहे हैं।
डेविड गिश

0

मैं मूल एप्लिकेशन अपलोड बाइनरी अस्वीकृति में त्रुटियों को इंगित करने के लिए Textwrangler का उपयोग करना पसंद करता हूं। (क्रैश डेटा आपके itunesConnect खाते में मिल जाएगा।) ऊपर सचिन की विधि का उपयोग करते हुए मैं Text.crangler के मूल.crash की प्रतिलिपि बनाता हूं, फिर उस प्रतीक चिह्न फ़ाइल की प्रतिलिपि बनाएँ जिसे मैंने किसी अन्य TextWrangler फ़ाइल में बनाया है। दो फाइलों के अंतर की तुलना करें। प्रतीकात्मक फ़ाइल में अंतर होंगे जो फ़ाइल और लाइन संख्या की समस्याओं को इंगित करते हैं।


-2

क्रैश क्रैश लॉग की निगरानी के लिए हम Google क्रैशलाईटिक्स का उपयोग करते हैं, यह महसूस करने के लिए बहुत ही सामयिक और सुविधाजनक है।

दस्तावेज़ लिंक app https://docs.fabric.io/apple/crashlytics/missing-dsyms.html#missing-dsyms

मिसिंग dSYMs फैब्रिक के बारे में सभी में आपकी परियोजना के dSYM को स्वचालित रूप से अपलोड करने का एक टूल शामिल है। उपकरण को / रन स्क्रिप्ट के माध्यम से निष्पादित किया जाता है, जो ऑनबोर्डिंग प्रक्रिया के दौरान आपके रन स्क्रिप्ट बिल्ड चरण में जोड़ा जाता है। हालाँकि कुछ विशेष परिस्थितियाँ हो सकती हैं, जब dSYM अपलोड अद्वितीय प्रोजेक्ट कॉन्फ़िगरेशन के कारण विफल हो जाते हैं या यदि आप अपने ऐप में बिटकोड का उपयोग कर रहे हैं। जब कोई अपलोड विफल हो जाता है, तो क्रैशलाइटिक्स क्रैश का प्रतीक और प्रदर्शन करने में सक्षम नहीं होता है, और आपके फैब्रिक डैशबोर्ड पर एक "मिसिंग dSYM" अलर्ट दिखाई देगा।

गुम dSYM को नीचे उल्लिखित चरणों के बाद मैन्युअल रूप से अपलोड किया जा सकता है।

नोट: स्वचालित dSYM अपलोड टूल के विकल्प के रूप में, फैब्रिक एक कमांड-लाइन टूल (अपलोड-प्रतीक) प्रदान करता है जिसे मैन्युअल रूप से आपकी परियोजना की निर्माण प्रक्रिया के हिस्से के रूप में चलाने के लिए कॉन्फ़िगर किया जा सकता है। कॉन्फ़िगरेशन निर्देशों के लिए नीचे दिए गए अपलोड-प्रतीक अनुभाग देखें।

...

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