2016-07-28 7 views
0

Ich habe dies umfassend gegooglet, und entweder die Situation jemand erlebt eine andere Xcode-Version (und damit verschiedene Build-Optionen) oder eine Anwesenheit einer dSYM-Datei.Leere dSYM-Ordner in Xcode-Archiv

Also, hier ist die Situation. Ich habe einen Absturzbericht über Xcode erhalten. Es sind nur Speicheradressen. Der Versuch, es im Projekt zu öffnen, gibt mir die gleichen Speicheradressen. Ich habe über manuelle Symbolisierung nachgedacht, aber dafür brauche ich meine dSYM-Datei, die dem von mir erstellten Archiv entspricht. Aber wenn ich "Paketinhalt anzeigen" für das Archiv, das ich in Finder eingebaut habe, ist sein dSYM-Ordner leer.

zum Zeitpunkt der Archivierung Meine Xcode Einstellungen waren:

DEBUG_INFORMATION_FORMAT: DWARF with dSYM File

STRIP_INSTALLED_PRODUCT: Yes Umschalten auf No macht keinen Unterschied.

DEPLOYMENT_POSTPROCESSING: No Die Umschaltung auf Yes macht keinen Unterschied.

Außerdem habe ich beim Hochladen des Archivs in iTunes Connect die Option "Symbole einschließen" ausgewählt.

Der Prozess für die Bereitstellung mit Apple ist verwirrend-wie-Hölle genug, ohne sich Sorgen zu machen, dass, wenn ein Absturz auftritt, der resport tatsächlich lesbar ist!

Also meine Fragen sind:

1) Warum ein DSYM Datei mein Archiv fehlt?

2) Wenn die dSYM-Datei erstellt wurde, wo könnte sie sein?

3) Wenn ich wirklich keine dSYM-Datei habe, kann ich trotzdem irgendwie lesbare Symbolnamen bekommen? Ich habe das Original-Archiv, das ich hochgeladen habe, und habe Zugriff auf den Quellcode für dieses Build.

3a) Wenn ich Produkt> Archiviere erneut (und unter der Annahme, dass ein dSYM generiert wird), kann ich stattdessen diese dSYM-Datei verwenden? Oder wird es eine andere UUID haben, die dazu führt, dass sie nicht mit dem Absturzprotokoll zusammenhängt ... nun ... Apple?

Xcode Version: 6.4

Hier ist, was meine Crashlog wie in Xcode Organizer aussieht: enter image description here

Dank.

EDIT:

ich Xcode Upgrade 7.3, bevor diese versuchen, aber es kann auch für 6. Version arbeiten

Die Lösung in Frage zu stellen (1) ist die folgende in Projektbuildeinstellungen festlegen:

GCC_GENERATE_DEBUGGING_SYMBOLS

Antwort

1

Für Frage 1), weiß ich auch nicht. Es könnte ein Fehler von Xcode sein. Sie können den gleichen Code erneut
archivieren und dann eine gleiche dSYM-Datei generieren.

Für Frage 2) können Sie 'dSYM' im Ordner '~/Library' suchen, da 'dSYM' Datei dort im Allgemeinen ausgegeben wird. Wenn nicht gefunden, versuchen Sie es auf der gesamten Festplatte zu suchen.

Für Frage 3) müssen Sie die Systembibliothek Symboldatei, die das Crash-Protokoll im Abschnitt "Binärbilder" aufgeführt. Sie finden es unter '~/Library/Developer/Xcode/iOS DeviceSupport'. Wenn nicht gefunden, können Sie ein iPhone mit der gleichen Betriebssystemversion, die im Absturzprotokoll angezeigt wird, mit Xcode verbinden. Nachdem Xcode die Verarbeitung abgeschlossen hat, kann die Systembibliothekssymboldatei des iPhones in den Ordner kopiert werden. Dann können Sie das Absturzprotokoll erneut symbolisieren.

Für Frage 3a), für den gleichen App-Code, verschiedene Archiv möglicherweise eine andere dSYM-Datei (UUID) haben. Wenn Sie es verwenden, um das Crashprotokoll zu symbolisieren, ist die symbolisierte Crash-Linie sehr nah an der realen Crash-Linie, so dass dies auch Ihnen helfen kann, die wahre Ursache des Absturzes zu erschließen.

In Ihrem Screenshot ist nur eine Zeile aus Ihrem App-Code nicht symbolisiert. Jetzt können Sie die dSYM-Datei Ihrer App generieren, indem Sie den App-Code verwenden, der bewirkt, dass der Absturz erneut archiviert wird. Nachdem Sie die dSYM-Datei generiert haben, verwenden Sie die Befehlszeile dwarfdump -u yourApp.app.dSYM, um UUID davon zu erhalten. Überprüfen Sie dann die Uuid, wenn sie in der ersten Zeile von 'Binärbilder' enthalten ist. Wenn NEIN, können Sie die UUID in der ersten Zeile von "Binärbilder" genauso ändern wie die neue UUID, die von dwarfdump -u XXX.dSYM stammt. Beachten Sie die CPU-Architektur. Beenden Sie dies, Sie können das Absturzprotokoll in Xcode neu symbolisieren oder die Befehlszeile symbolicatecrash crashreport.crash yourApp.app.dSYM verwenden. Hinweis: Sie müssen sicherstellen, dass die Version Ihres App-Codes der Version im Crash-Protokoll entspricht, andernfalls ist das Ergebnis unglaublich.

+0

In Bezug auf Ihre Lösung (3), was meinst du mit "Binary Images Abschnitt? Wo ist dieser Abschnitt? Ich habe meine Frage mit einem Screenshot meines Absturzprotokolls bearbeitet. Ich sehe keinen solchen Bereich. – Ash

+0

Das Absturzprotokoll wird in Xcode-Abstürzen nicht vollständig angezeigt. Das Standard-Crash-Protokoll wird unter [hier] (https://developer.apple.com/library/ios/technotes/tn2151/_index.html#top) erläutert. Wenn Sie ein Crashprotokoll vollständig symbolisieren möchten, müssen Sie alle Symboldateien im Abschnitt "Binärbilder" aufgelistet haben und jede Datei mit einer UUID im Abschnitt "Binärbilder" markiert sein. Jetzt können Sie Ihren Absturz vollständig symbolisieren, wenn Sie die dSYM-Datei Ihres Codes erstellt haben. – hwris

+0

Ich habe 'Paketinhalte anzeigen' in der xccrashpoint-Datei angezeigt und navigiert, um 3 .crash-Dateien zu finden. Wenn ich diese in einem Texteditor unter "Binärbilder" öffne, gibt es nur eine sehr lange Liste von .dylib-Dateinamen und -Dateinamen, die mit/System/Library/beginnen. Was soll ich mit diesen tun? Muss ich im Rahmen dieses Prozesses eine dSYM-Datei erstellen? Könnten Sie bitte mehr ausarbeiten? Vielleicht geben Sie Schritt-für-Schritt-Anleitungen? Vielen Dank. – Ash

0

Auf XCode 8.3.2, wählen Ja auf Debugsymbole generierenenter image description here