Tôi gặp sự cố khi kết hợp bù trừ trong dấu vết ngăn xếp của các bãi tai nạn iOS với bù đắp trong việc tháo gỡ nhị phân dưới dạng đầu ra bởi otool.Kết hợp bù đắp trong vùng đổ vỡ iOS để tháo rời nhị phân
Ai đó có thể xác nhận về nguyên tắc tôi khớp với những nguyên tắc này. Ví dụ, nếu tôi nhận được một dòng trong đổ sụp đổ:
0 myapp 0x00005b0a 0x1000 + 19210
Tôi mong chờ sự bù đắp của lệnh vi phạm trong file nhị phân là 0x5b0a, 0x4b0a .... hay cái gì khác?
Trong giải mã của các thông tin tiêu đề, otool cũng đưa ra, ví dụ, thông tin này (mã thực sự bắt đầu tại 0x0000224c bù đắp trong file):
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
Vì vậy, tôi đã không chắc chắn 100% Tôi đã giải thích điều này một cách chính xác, nhưng có vẻ như đang nói rằng mã, tại + 0x224c trong tệp, kết thúc ở độ lệch 0x124c trong bộ nhớ, nhưng sau đó tôi đã không chắc chắn chính xác cách trang bị này, ví dụ, vị trí 0x1000.
Vấn đề tôi đưa ra là 0x5b0a, không có lệnh 0x4b0a hay 0x6b0a như hướng dẫn thực tế trong câu hỏi (kể cả thực tế ví dụ: 't trỏ đến hướng dẫn chi nhánh).
(Tôi biết rằng, ít nhất là trên các hóa thân trước đó của ARM, có sự khác biệt giữa giá trị của máy tính và địa chỉ bộ nhớ tương ứng do đường ống dẫn. Tôi đã giả định. vào tài khoản trong các lỗi được báo cáo trong bãi đổ vỡ, hoặc ở bất kỳ mức nào, tôi sẽ thấy lệnh chi nhánh được đề cập đến một vài hướng dẫn ở hai bên đã chỉ ra nếu sự khác biệt đó không được tính đến ...)
Ai có thể làm sáng tỏ không?
Có lý do nào bạn không thể chỉ đơn giản là biểu tượng không? http://stackoverflow.com/questions/3832900/how-to-manually-symbolicate-ios-crash-to-view-crash-logs/8648232#8648232 –
Tôi không thể * đơn giản * biểu tượng vì tôi không có tệp biểu tượng (mã được biên soạn bởi bên thứ ba). Tuy nhiên, nếu đó là lựa chọn duy nhất thì tôi đoán tôi sẽ phải hỏi xem họ có thể cung cấp tệp biểu tượng hay không. Vì vậy, nó là nhiều hơn rằng nếu có một cách để tôi tính toán bù đắp, đó là một quá trình nhanh hơn cho tôi trong trường hợp cụ thể này. –