Я вижу некоторые сбои в моей консоли разработчика из сторонней разделяемой библиотеки, которую я использую.Как найти инструкцию от сторонней общей библиотеки, вызвавшей сбои в работе андроида?
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'Sony/D2406/D2406:4.4.4/18.3.1.C.1.17/7nt3bg:user/release-keys'
Revision: '0'
pid: 6736, tid: 6794, name: Main Thread >>> com.mytest.app <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000012
r0 00000000 r1 64c3b3f4 r2 00000001 r3 00000000
r4 ffffb194 r5 64bb9660 r6 64c3b3f4 r7 64c3d848
r8 ffffbb78 r9 ffffb214 sl 64d92bcc fp 64d93bd4
ip 64bbb3ac sp 64d92bc0 lr 641c029f pc 641c02f8 cpsr 40070030
d0 0000000700000007 d1 4000000040000000
d2 000000003f47ae40 d3 0000000000000000
d4 fe8000003f000001 d5 000122e800000000
d6 0000000000000000 d7 00000000000022ec
d8 0000000000000000 d9 0000000000000000
d10 0000000000000000 d11 0000000000000000
d12 0000000000000000 d13 0000000000000000
d14 0000000000000000 d15 0000000000000000
d16 3f14f8b588e30000 d17 c01dc3a2163fdd66
d18 3f8000003f800000 d19 0000000100000000
d20 0000000700000001 d21 000000004036ee50
d22 0000000064d94b04 d23 403294d140368de8
d24 3f80000000000000 d25 3f8000003f800000
d26 c0000000c0000000 d27 0000000000000000
d28 0000000000000000 d29 3f80000000000000
d30 0000000000000000 d31 0000000000000000
scr 6000009f
backtrace:
#00 pc 001452f8 /data/app-lib/com.mytest.app-1/libcode.so
#01 pc 0014529b /data/app-lib/com.mytest.app-1/libcode.so
code around pc:
641c02d8 f8da6048 b11005cc 68496801 f8df4788
641c02e8 22015a9c 4a98f8df 447d2300 68005960
641c02f8 1012f9b0 50e4f20d e5fcf544 1005f859
641c0308 68896848 d00c4288 d0192800 51e4f20d
641c0318 e61af544 0a6cf8df f8594478 68400000
641c0328 f8dfe00f 44780a64 0000f859 51e4f20d
641c0338 e110f54e 4604e00c 05e0f8da ba38f00b
641c0348 f8df2000 30141a48 f8594479 60481001
641c0358 05e0f8da 6801b110 47886849 5a30f8df
641c0368 23012201 5960447d f9b06800 f50d1012
641c0378 f54460bf f859e5c0 68481005 42886889
641c0388 2800d00c f50dd019 f54461bf f8dfe5de
641c0398 44780a04 0000f859 e00f6840 09f8f8df
641c03a8 f8594478 f50d0000 f54e61bf e00ce0d4
641c03b8 f8da4604 f00b05f4 2000b9fb 19dcf8df
641c03c8 44793014 1001f859 f8da6048 b11005f4
code around lr:
641c027c f50d7901 f54460ba f859e63c 68481005
641c028c 42886889 2800d00c f50dd019 f54461ba
641c029c f8dfe65a 44780ad8 0000f859 e00f6840
641c02ac 0accf8df f8594478 f50d0000 f54e61ba
641c02bc e00ce150 f8da4604 f00b05cc 2000ba77
641c02cc 1ab0f8df 44793014 1001f859 f8da6048
641c02dc b11005cc 68496801 f8df4788 22015a9c
641c02ec 4a98f8df 447d2300 68005960 1012f9b0
641c02fc 50e4f20d e5fcf544 1005f859 68896848
641c030c d00c4288 d0192800 51e4f20d e61af544
641c031c 0a6cf8df f8594478 68400000 f8dfe00f
641c032c 44780a64 0000f859 51e4f20d e110f54e
641c033c 4604e00c 05e0f8da ba38f00b f8df2000
641c034c 30141a48 f8594479 60481001 05e0f8da
641c035c 6801b110 47886849 5a30f8df 23012201
641c036c 5960447d f9b06800 f50d1012 f54460bf
The lib для arm-v7 abi. Можно ли узнать, какая команда вызвала сбой, когда я декомпилирую общую библиотеку или objdump с помощью (arm-linux-androideabi-objdump.exe), где я могу видеть экспортированные методы и инструкции. Как я могу связать адрес pc в дампе сбоя с инструкцией. У меня нет доступа к исходному коду только для этого файла.
Можете ли вы объяснить мне, как именно вы получили код в своем посте? а также то, что адрес рядом с инструкцией по сборке представляет [img] (https://i.gyazo.com/ac344e6e303a6c1f26a81c7697755a6b.png)? они увеличиваются на 2, поэтому я предполагаю, что это какой-то порядок обучения, не должен ли ПК (001452f8) быть одним из этих чисел? – user2341944
Я понимаю это больше. «code around pc» в основном показывает инструкции. Я смог найти эту цепочку обучения, и теперь я знаю, где произошла ошибка. Адрес компьютера 001252f8 «backtrace» - это только 641c02f8 - (адрес загрузки во время выполнения), которые являются этими инструкциями (1012f9b0 50e4f20d ...), но что в случае, когда у меня нет части «code around pc» только «backtrace», как бы я идти о нахождении линии в dissembler? – user2341944
Я предполагаю, что адрес, указанный в backtrace, является исходным объектным файлом VMA, поскольку он явно не является фактическим адресом времени выполнения (это означает, что отладчик или что-то другое, генерирующее backtrace, знает, где каждый раздел был перемещен в в адресном пространстве процесса - вы сами это видите, проверяя/proc//maps во время его работы). Поэтому он должен быть таким же простым, как разборка .so и поиск этого адреса. –
Notlikethat