Sổ tay ARM nói rằng:ARM hội backtrace PC bù đắp
Trong thực, PC không chứa địa chỉ của lệnh hiện thực hiện. Địa chỉ của lệnh thực thi thường là PC-8 cho ARM hoặc PC-4 dành cho Ngón tay cái.
Tính năng này cũng áp dụng cho các giá trị PC
trong các dấu gạch ngang tai nạn không?
Ví dụ, nếu tôi có vết lùi sau (từ điện thoại ARMv7 Android sử dụng hướng dẫn ARM):
libSomeLib.so!SomeClass::someMethod [someFile.cpp : 638 + 0x4]
r0 = 0x00000001 r1 = 0xffffffff r2 = 0x00000000 r3 = 0xd4fcd71c
r4 = 0xd39b9284 r5 = 0xd39b927c r6 = 0xd39b9278 r7 = 0xc7025520
r8 = 0xc5e1d7b0 r9 = 0xe01136a8 r10 = 0x00000012 r12 = 0xd39b9268
fp = 0xd39b92d4 sp = 0xd39b9268 lr = 0xd4ea1f24 pc = 0xd4ea1f24
...
0xd47cb000 - 0xd5079fff libSomeLib.so ???
Tôi có nên tìm kiếm sự hướng dẫn bị rơi bên libSomeLib.so
tại 0xd4ea1f24-0xd47cb000=0x006D6F24
hoặc 0xd4ea1f24-0xd47cb000-8=0x006D6F1C
?
Tôi mong đợi PC đã được điều chỉnh cho bạn. Bạn nên kiểm tra nó với một lỗi đã biết để chắc chắn. – Jester