449 Stimmen

Symbolisierung von iPhone App-Absturzmeldungen

Ich möchte versuchen, die Absturzberichte meiner iPhone-App zu symbolisieren.

Ich habe die Absturzberichte von iTunes Connect abgerufen. Ich habe die Programm-Binärdatei, die ich im App Store eingereicht habe, und ich habe die dSYM-Datei, die als Teil des Builds erstellt wurde.

Ich habe alle diese Dateien in einem einzigen Verzeichnis, das von Spotlight indiziert wird.

Was nun?

Ich habe versucht, sie aufzurufen:

symbolicatecrash crashreport.crash myApp.app.dSYM

und es wird einfach derselbe Text ausgegeben, der zu Beginn im Absturzbericht steht, nicht symbolisiert.

Mache ich etwas falsch?

8voto

cberkley Punkte 311

Öffnen Sie in Xcode 4.2.1 Veranstalter und gehen Sie dann zu Bibliothek/Geräteprotokolle und ziehen Sie Ihre .crash-Datei in die Liste der Absturzprotokolle. Nach ein paar Sekunden wird sie für Sie symbolisiert.

Beachten Sie, dass Sie dieselbe Instanz von Xcode verwenden müssen, auf der der ursprüngliche Build archiviert wurde (d. h. das Archiv für Ihren Build muss sich in Veranstalter ).

7voto

AndrewS Punkte 7658

Der magische Xcode Organizer ist nicht so magisch, wenn es darum geht, meine App zu symbolisieren. Ich habe überhaupt keine Symbole für die Absturzberichte erhalten, die ich von Apple nach einer fehlgeschlagenen App-Einreichung zurückbekommen habe.

Ich habe versucht, den Absturzbericht über die Befehlszeile in denselben Ordner zu legen wie die .app-Datei (die ich an den Store geschickt habe) und die .dSYM-Datei:

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

Dies lieferte nur Symbole für meine App und nicht den Kern Foundation Code, aber es war besser als die Nummer Dump, dass Organizer gibt mir und war genug für mich zu finden und zu beheben, die meine App hatte Absturz. Wenn jemand weiß, wie diese zu erweitern, um Foundation-Symbole zu erhalten, wäre es zu schätzen.

6voto

samvermette Punkte 39991

In meinem Fall habe ich die Absturzberichte direkt aus Mail in den Organizer gezogen. Aus irgendeinem Grund hat das verhindert, dass die Absturzberichte symbolisiert wurden (ich wüsste gerne, warum).

Wenn man die Absturzberichte zuerst auf den Desktop kopiert und dann von dort in den Organizer zieht, werden sie korrekt symbolisiert.

Ein sehr spezieller Fall, ich weiß. Aber ich dachte, ich teile ihn mit, nur für den Fall.

4voto

Sean Aitken Punkte 1147

Die Kombination, die bei mir funktioniert hat, war:

  1. Kopieren Sie die dSYM-Datei in das Verzeichnis, in dem sich der Absturzbericht befindet
  2. Entpacken Sie die ipa-Datei, die die Anwendung enthält ('unzip MyApp.ipa')
  3. Kopieren Sie die Anwendungsbinärdatei aus der resultierenden explodierten Nutzlast in denselben Ordner wie den Absturzbericht und die Symboldatei (z. B. "MyApp.app/MyApp")
  4. Importieren oder Re-symbolisieren des Absturzberichts aus dem Organizer von Xcode

Verwendung von atos Ich war nicht in der Lage, die korrekten Symbolinformationen mit den Adressen und Offsets, die im Absturzbericht standen, aufzulösen. Als ich dies tat, sehe ich etwas aussagekräftigeres, und es scheint ein legitimer Stack-Trace zu sein.

4voto

Alfie Hanssen Punkte 16656

Für diejenigen, die Airbrake verwenden, gibt es oben eine solide Antwort, aber sie würde bei mir nicht funktionieren, ohne sie zu optimieren:

Funktioniert bei einigen Speicheradressen, aber nicht bei anderen, keine Ahnung warum...

  • Neues Verzeichnis auf dem Desktop oder wo auch immer erstellen
  • Suchen Sie das betreffende Archiv im Xcode-Organizer
  • Doppeltippen zum Anzeigen im Finder
  • Doppeltippen, um den Inhalt des Pakets anzuzeigen
  • Kopieren Sie die .dSYM-Datei und die .app-Datei in das neue Verzeichnis
  • cd im neuen Verzeichnis
  • Führen Sie diesen Befehl aus: atos -arch armv7 -o 'Vimeo.app'/'Vimeo'
  • Das Terminal wird eine interaktive Bewegung ausführen
  • Fügen Sie die Speicheradresse ein und drücken Sie die Eingabetaste. Es werden der Name der Methode und die Zeilennummer ausgegeben.
  • Alternativ können Sie auch diesen Befehl eingeben: atos -arch armv7 -o 'Vimeo.app'/'Vimeo' Um Informationen für nur eine Adresse zu erhalten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X