2012-05-14 17 views
13

IOS çökme yığınlarının yığın izlerindeki ofsetleri, ikili dizinin otool tarafından çıkarılması sırasında ofsetlerle eşleştirilmesinde sorun yaşıyorum.iOS kilitlenme eşleşmelerinin eşleştirilmesi ikili dağıtılmış ikili dökümü

Prensip olarak bunları nasıl eşleştirdiğimi kimse anlayabilir mi? Öldüğü çöplükte bir çizgi olsun Örneğin,:

0 myapp 0x00005b0a 0x1000 + 19210 

ben beklediğiniz 0x5b0a, 0x4b0a .... veya başka bir şey olması ikili dosyasında kusurlu talimatının ofset? başlık bilgileri kendi Kodçözmede

, otool da verir, örneğin, bu bilgiler (gerçek kod dosyasında ofset 0x0000224c başlar):

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 

Yani,% 100 emin değildi Bunu doğru bir şekilde yorumluyordum, ama dosyadaki + 0x224c'deki kodun bellekte 0x124c ofsetinde bittiğini ama sonra bunun nasıl yerleştirildiğini tam olarak bilmiyordum. 0x1000.

Verdiğim sorun, "0x5b0a" ofset, yani ne komut ne de 0x4b0a'da ne de 0x6b0a'da verilen komutun verilişidir (sözgelimi, örn. dal talimatlarını gösteriniz).

(en az ARM önceki incarnations üzerinde nedeniyle talimat boru hattına PC değerine karşılık gelen bellek adresi arasındaki farklılık bulunduğunu biliyoruz. Böyle bir fark alınacağı varsayarak oldu kilitlenme dökümünde bildirilen ofsetlerde veya herhangi bir oranda hesaba katılırsa, söz konusu branş talimatını, söz konusu farkın dikkate alınmaması durumunda işaret edilen tarafın birkaç yönergesini dikkate alacağım ...)

Herhangi biri ışık tutabilir mi?

+0

sadece symbolicate edemez bir neden var mı? http://stackoverflow.com/questions/3832900/how-to-manually-symbolicate-ios-crash-to-view-crash-logs/8648232#8648232 –

+2

ben * basitçe * symbolicate bende olmayan olamaz çünkü sembol dosyası (kod bir üçüncü tarafça derlenir). o zaman tek seçenek Ancak, ben onlar sembol dosyası sağlayabilirsiniz sormak gerekecek sanırım. Yani offset beni hesaplamak için bir yol varsa, bu özel durumda benim için daha hızlı bir süreç olduğunu daha fazla. –

cevap