Ich habe Probleme beim Abgleich der Offsets in den Stack-Spuren von iOS Crash-Dumps mit Offsets in der Disassemblierung der Binärdatei als Ausgabe von Otool.Übereinstimmende Upsets in iOS Crash-Dump zu demontierten Binär
Kann jemand bestätigen, wie im Prinzip ich diese zusammenbringen. wenn ich eine Zeile in dem Crash-Dump Zum Beispiel erhalten:
0 myapp 0x00005b0a 0x1000 + 19210
würde ich erwarten, dass der Offset des betreffenden Befehls in der Binärdatei 0x5b0a, 0x4b0a .... oder etwas anderes zu sein?
In seiner Dekodierung der Header-Informationen, otool gibt zum Beispiel auch, diese Informationen (der eigentliche Code beginnt in der Datei bei Offset 0x0000224c):
Section
sectname __text
segname __TEXT
addr 0x0000224c
size 0x00063ad2
offset 4684
align 2^2 (4)
reloff 0
nreloc 0
type S_REGULAR
attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS
reserved1 0
reserved2 0
Also, ich nicht 100% sicher war Ich habe das richtig interpretiert, aber es scheint zu sein, dass der Code bei + 0x224c in der Datei bei Offset 0x124c im Speicher gelandet ist, aber dann war ich nicht genau sicher, wie das zum Beispiel in den Ort passte 0x1000. Das Problem, das ich habe, ist das gegeben, sagen wir, der Offset 0x5b0a, weder die Anweisung dort noch bei 0x4b0a noch bei 0x6b0a macht Sinn als die eigentliche Anweisung in Frage (einschließlich der Tatsache, dass zB Orte weiter unten im Stapel dann don nicht auf Verzweigungsanweisungen zeigen.
(Ich weiß, dass, zumindest auf früheren Verkörperungen ARM, eine Diskrepanz zwischen dem Wert des PC war und der entsprechenden Speicheradresse durch die Befehlspipeline. I vorausgesetzt war, daß ein solcher Unterschied berücksichtigt werden würde, Bei den Offsets, die im Crash Dump gemeldet wurden, oder jedenfalls würde ich die fragliche Verzweigungsanweisung ein paar Anweisungen auf der einen Seite sehen, auf die verwiesen wurde, wenn ein solcher Unterschied nicht berücksichtigt wurde ...)
Kann jemand Licht abgeben?
Gibt es einen Grund, warum Sie nicht einfach symbolisieren können? http://stackoverflow.com/questions/3832900/how-to-manual-symbolicate-ios-crash-to-view-crash-logs/8648232#8648232 –
Ich kann nicht * einfach * symbolisieren, weil ich nicht habe die Symboldatei (der Code wird von einem Dritten kompiliert). Wenn das jedoch die einzige Option ist, dann muss ich wohl fragen, ob sie die Symboldatei bereitstellen können. Es ist also eher so, dass es für mich in diesem speziellen Fall ein schnellerer Prozess ist, wenn ich den Offset berechnen kann. –