We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I am debugging in a Android problem. From log file there is a crash in services. But it is in service.odex. I tried to dump memory around crash pc and got values as following:
[96941.575555@3] vma for d0936954:[96941.578614@3] d0578000-d0e05000 r-xp 00c90000 b3:0c 1155 /system/framework/oat/arm/services.odex[96941.587327@3] vma for d093693d:[96941.590430@3] d0578000-d0e05000 r-xp 00c90000 b3:0c 1155 /system/framework/oat/arm/services.odex
[96941.646235@3] PC: 0xd09368d4:[96941.650823@3] 68d4 0118f8d0 e020f8d0 f10b47f0 f10a3bff f10b3aff 46500201 c000f8b9 0f00f1bc[96941.659081@3] 68f4 e08bd0cd f2404631 68087c11 0084f8d0 f8d06980 47f0e020 1010f8d8 468a4607[96941.667364@3] 6914 f8d06808 f8d000dc 47f0e020 42822200 4682da48 1010f8d8 46939104 f8d06808[96941.675643@3] 6934 f8d00104 47f0e020 69a99005 5100f501 1760f8d1 d0692900 6802b138 d004428a[96941.683924@3] 6954 2a006a12 6802d1fa 6881e069 f2409106 68087c11 0084f8d0 f8d06980 47f0e020[96941.692201@3] 6974 d0084287 0201f10b f8b94650 f1bcc000 d0cc0f00 f8d8e058 465a1010 6808460d[96941.700498@3] 6994 0118f8d0 e020f8d0 463947f0 23009a05 1cdef241 f8d06808 f8d00084 f8d0009c[96941.708762@3] 69b4 47f0e020 1008f8d8 6808460d 00dcf8d0 e020f8d0 280047f0 f8d8d10e 460d1010
Because serivce.odex is dynamic gererated file and there is no so/bin file consistent with this odex file. So although I know memory value around PC, but it is hard for me to convert these value to assemble code to debug why it crashed.
I want to know is there any tools which can change memory like above to assemble instructions?
objdump should be helpful.
How to use this tool ? which args can change binary files to assmble code? How does objdump recognize instruction set of these memory, thumb, thumb2 or arm or aarch64?