Ошибка при попытке установить точку останова с помощью jdwp в android - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь реализовать jdwp (java протокол отладочного провода) в android, когда я пытаюсь установить точку останова с помощью команды jdwp EventRequest # set, я получаю cra sh, как показано ниже

A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xffffffffbf18779c in tid 2631 (JDWP), pid 2374 

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
A/DEBUG: Build fingerprint: 'HONOR/DUK-AL20/HWDUK:9/HUAWEIDUK-AL20/179C00R1:user/release-keys'
A/DEBUG: Revision: '0'
A/DEBUG: ABI: 'arm64'
A/DEBUG: pid: 2374, tid: 2631, name: JDWP  >>> com.test.jdwp <<<
A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xffffffffbf18779c
A/DEBUG:     x0  00000072c7436ce0  x1  00000072a6301018  x2  0000000000000000  x3  00000072c7436ce0
A/DEBUG:     x4  00000072c7436d00  x5  00000072a6300fe8  x6  000000734dbaa000  x7  0000000000a6439a
A/DEBUG:     x8  0000000000000000  x9  0000000000000001  x10 0000000000000020  x11 0000000000002000
A/DEBUG:     x12 0000000000200000  x13 0000000000000000  x14 0000000000000070  x15 aaaaaaaaaaaaaaab
A/DEBUG:     x16 00000072c4d69f80  x17 000000734ada12b0  x18 0000000000000001  x19 00000072a8f30800
A/DEBUG:     x20 00000072c7436ce0  x21 ffffffffbf187798  x22 00000072a6301018  x23 00000072c74ee3e0
A/DEBUG:     x24 00000072c74ee3c0  x25 00000072a6301588  x26 0000000000000000  x27 00000072c4c99f37
A/DEBUG:     x28 0000000000000001  x29 00000072a6300ff0
A/DEBUG:     sp  00000072a6300f60  lr  00000072c4a0bcc0  pc  00000072c4893994
A/DEBUG: backtrace:
A/DEBUG:     #00 pc 0000000000178994  /system/lib64/libart.so (art::Dbg::WatchLocation(art::JDWP::JdwpLocation const*, art::DeoptimizationRequest*)+884)
A/DEBUG:     #01 pc 00000000002f0cbc  /system/lib64/libart.so (art::JDWP::JdwpState::RegisterEvent(art::JDWP::JdwpEvent*)+136)
A/DEBUG:     #02 pc 00000000002fbd4c  /system/lib64/libart.so (art::JDWP::ER_Set(art::JDWP::JdwpState*, art::JDWP::Request*, art::JDWP::ExpandBuf*)+1536)
A/DEBUG:     #03 pc 00000000002f8264  /system/lib64/libart.so (art::JDWP::JdwpState::ProcessRequest(art::JDWP::Request*, art::JDWP::ExpandBuf*, bool*)+1140)
A/DEBUG:     #04 pc 00000000002ffac0  /system/lib64/libart.so (art::JDWP::JdwpState::HandlePacket()+164)
A/DEBUG:     #05 pc 0000000000303fbc  /system/lib64/libart.so (art::JDWP::JdwpSocketState::ProcessIncoming()+996)
A/DEBUG:     #06 pc 00000000002ffe0c  /system/lib64/libart.so (art::JDWP::JdwpState::Run()+444)
A/DEBUG:     #07 pc 00000000002ff4f4  /system/lib64/libart.so (art::JDWP::StartJdwpThread(void*)+40)
A/DEBUG:     #08 pc 0000000000083550  /system/lib64/libc.so (__pthread_start(void*)+36)
A/DEBUG:     #09 pc 00000000000241a0  /system/lib64/libc.so (__start_thread+68)

параметр, который я передал через команду jdwp EventRequest # set, является точкой останова, ему нужно местоположение, содержащее 4 параметра: typetag 、 classId 、 methodId 、 index (который определяет местоположение в методе), я могу получить (typetag 、 classId 、 methodId) из другой команды jdwp, но только param (index) Я не знаю, где найти или как вычислить

, так, кто-нибудь знает, как решить проблему и как получить Индекс (который определяет местоположение в методе), вы можете помочь решить, спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...