Mit atos den Namen der abgestürzten Methode mit dSYM bestimmen

8

Ich habe einen Konsolenstack (kein Absturzbericht) von einem Benutzer, und ich versuche herauszufinden, welcher Methodenaufruf in meiner Anwendung der letzte Mann war.

Ich weiß, welche Version der Anwendung sie verwendet haben, und ich habe eine Kopie dieses Release / Debug-Builds zusammen mit der dSYM-Datei für die archivierte Kopie.

Aber wenn ich versuche, atos zu verwenden, um die Speicheradresse auszuspucken, scheint es nicht zu helfen. (Ich verwende 0x000000010e703bc0 aus dem Stapel unten.)

%Vor%

Muss ich einen Offset irgendeiner Art eingeben? Oder irgendeine Art von Speicheradressmathematik, um den tatsächlichen Ort innerhalb des Speicherblocks meines Programms zu bestimmen, basierend auf der Adresse, die mir vom Benutzer zur Verfügung gestellt wurde?

Dies ist die Gesamtheit der Stapelverfolgung, die ich erhalten habe:

%Vor%     
Craig Otis 30.11.2012, 22:56
quelle

1 Antwort

14

es erwartet eine Ladeadresse. Hast du es versucht:

%Vor%

Ich erhalte 0x000000010E6FE000 von Ihrem Beispiel, indem ich 6836 (base10) von 0x000000010e6ffab4 subtrahiere ... oder Sie können eines der anderen Mathe-Elemente verwenden, die dort für MyApp angezeigt werden.

Hier ist ein Beispiel aus einem meiner letzten Abstürze, bei dem 0x2d000 aus dem Absturzprotokoll ersichtlich war. Erste Zeile ist, was ich in der Befehlszeile eingegeben habe. Jede zweite Zeile danach ist Programmausgabe (meine Eingabe wird künstlich mit $ oder $ & gt; eingerahmt ... es gibt keine solche Eingabeaufforderung auf dem Bildschirm).

%Vor%     
john.k.doe 05.12.2012, 12:50
quelle