2009-08-17 5 views
6

Bei der Symbolisierung von Absturzberichten habe ich festgestellt, dass Zeilennummern deaktiviert sind. Ich habe das mit einem Projekt getestet, bei dem ich absichtlich einen Absturz verursache. Es scheint, dass die erzeugte Zeilennummer bestimmte Zeilen nicht enthält, z. Kommentarzeilen oder Compiler-Präprozessoranweisungen (nicht sicher, was es tut und nicht enthält) ...Wie bekomme ich korrekte Zeilennummern in symbolischen Absturzberichten (iPhone/Mac)?

Gibt es einen einfachen Weg, um von der "Aus" -Zeilennummer im symbolisierten Absturzbericht zur eigentlichen Codezeile zu kommen die Quelle?

Edit: Ein Beispiel für eine Zeile in einem symbolicated Absturzbericht:

7 Luisterpaal 0x00005de2 -[SWFMP3 connection:didReceiveData:] (SWFMP3.m:320) 

So ist die Zeilennummer 320 ist fast richtig, aber nicht genau. Es ist ein paar Zeilen weg ...

Antwort

6

In einem Wort ... nein. Wenn Sie sich in einer Zeile wie diese in einem Crash-Bericht suchen:

0 com.apple.CoreFoundation 0x95cb046b CFArrayAppendValue + 43

Die "+43" ist keine Zeilennummer, aber ein Speicherort vom Anfang der Funktion. Der Code, wie du ihn geschrieben hast, existiert einfach nicht in der kompilierten Binärdatei - der Compiler optimiert und ändert den Code (zumindest in einem Release-Build) so, dass er meistens nicht mit dem übereinstimmt, was du geschrieben hast.

Leider besteht die Lösung darin, die Person, die den Absturz erlebt, mit einer Debug-Version auszustatten, die Sie remote debuggen oder NSLog() -Anweisungen ablegen kann, um sie zu verfolgen und/oder kleinere Methoden zu schreiben.

+2

Upvoted für "kleinere Methoden schreiben" :) – rpetrich

+0

Ich meinte die Nummern eines symbolisierten Crash-Logs, z. die "320" in: 7 Luisterpaal 0x00005de2 - [SWFMP3 Verbindung: didReceiveData:] (SWFMP3.m: 320) –

3

Diese Technical Note zeigt, wie der Bericht Code beziehen

+0

Ich konnte nicht genauere Zeilennummern erhalten, aber das ist eine Killer-Ressource zu Lesezeichen. – ckhan

0

ich auch dieses Problem hatte, aber nur weil ich bei einer neueren Version von Code war auf der Suche als das, was in die binären kompiliert wurde, die abgestürzt ist. Als ich in meine Quellhistorie zurückging und die entsprechende Version der Quelle fand, stimmten die Zeilennummern genau überein.

Verwandte Themen