Immer wenn in meiner Anwendung ein Absturz auftritt, werden die Absturzprotokolle symbolisch im Organizer angezeigt. Jetzt ist das Problem, dass alle Speicheradressen, die auf iOS-Klassen verweisen, symbolisiert werden, aber Speicheradressen meiner Anwendungsklassen werden nicht symbolisiert. Welche XCode-Projekteigenschaft muss ich einstellen, um sie zu aktivieren.
Dies sind die aktuellen Build-Einstellungen, die die Symbolisierung von iOS-Klassen ermöglichen. Ich verwende XCode 4.3.2.
Haben Sie den Scheinwerfer ausgeschaltet? symbolicatecrash verwendet Spotlight, um die Binärdateien und dsym-Dateien zu finden. Wenn Sie Spotlight also ausgeschaltet haben, können Sie sie nicht finden. Wie auch immer, hier ist, wie man eine hex StackTrace Adresse in eine Zeilennummer konvertiert:
[1] Finden Sie die .dSym-Datei, indem Sie auf XCode- & gt; Organizer klicken, auf Archive klicken, dann mit der rechten Maustaste auf das Archiv klicken und in dieses Verzeichnis wechseln (Sie können den Ordner einfach in ein Shell-Fenster ziehen) / p>
[2] cd in das Verzeichnis dSYMs.
[3] Führen Sie den Befehl dwarfdump aus, um die hexadezimale Adresse in eine Zeilennummer in Ihrem Code zu übersetzen:
%Vor% Strip Debug Symbols During Copy
: Sollte in nicht-Debug-Konfigurations-Builds YES
sein, da es deine App-Binärdatei um 30-50% in die Luft sprengen wird
Debug Information Format
: Sollte für alle Konfigurationen DWARF with dSYM File
sein, um Symbole aus beliebigen Binärdateien symbolisieren zu können.
Ich nehme an, dass Sie dies auf Debug-Builds versuchen, auf Builds, die nicht die neuesten Ergebnisse des Build-Befehls in Xcode sind. Sie müssen sich daran erinnern, dass jedes Mal, wenn Sie den Build-Befehl ausführen, eine neue ausführbare Datei und ein neues dSYM-Paket generiert werden und die vorherige überschrieben wird! (Außer wenn Sie die Archivierungsfunktion verwenden)
Das Symbolisierungssyntax analysiert die UUID aus dem Absturzbericht Ihrer App und durchsucht das entsprechende .app- und .app.dSYM-Paket über Spotlight. Wenn also entweder Spotlight den Zielpfad nicht indexiert oder die Binärdateien durch einen anderen Build-Lauf ersetzt werden, ist es nicht möglich, die Apps-Symbole zu symbolisieren.
Versuchen Sie, die Nachbearbeitung der Bereitstellung auf NO zu setzen.
DEPLOYMENT_POSTPROCESSING. Wenn Sie diese Einstellung aktivieren, werden die Binärdateien entfernt und der Dateimodus, der Eigentümer und die Gruppe gelöscht Informationen sollten auf Standardwerte eingestellt sein.
Es scheint, dass xcode die zuletzt archivierte Builddatei .dsym verwendet, um Ihre Logs zu symbolisieren (selbst im Debugging), also versuchen Sie, Ihre App zu archivieren .
Nachdem Sie Ihre App archiviert haben, re-symbolisieren Sie Ihre Absturzberichte.
Es hat für mich funktioniert.
Tags und Links iphone ios xcode cocoa-touch xcode4.3