Colección de citas famosas - Slogan de motivación - Problema de depuración dinámica de ida inversa de Android

Problema de depuración dinámica de ida inversa de Android

Primero ingrese "adb shell", luego ingrese "su root" para obtener permisos de root.

Luego ingrese "chmod 777 /data/local/tmp/android_server" para agregar los permisos correspondientes a android_server.

Luego ingrese "/data/local/tmp/android_server" para iniciar android_server.

Como se muestra en la siguiente figura:

Ingrese "adb forward tcp:23946 tcp:23946" para reenviar el puerto tcp

comando para iniciar la actividad ser depurado.

La aplicación mostrará el cuadro de diálogo "Esperando depurador", como se muestra a continuación:

Haga clic en el botón "Opciones de depuración" y seleccione "Suspender en el punto de entrada del proceso". "Suspender en hilo" inicio/salida”, "Suspender en carga/descarga de biblioteca" y otras opciones, como se muestra en la siguiente figura:

Después de hacer clic en "Aceptar", se completará "localhost" en el campo nombre de host en el siguiente cuadro de diálogo

Busque el proceso "com.example.testjniso" en la ventana emergente "Elija el proceso para adjuntar", seleccione el proceso y luego haga clic en el botón "Aceptar".

Puedes ver que el puerto del proceso com.example.testjniso es 8700.

Como se muestra en la siguiente figura:

En la ventana "Agregar mapa" que aparece desde ida, siempre haga clic en el botón "Cancelar".

Haga clic en el botón pausar la depuración en ida para pausar la depuración actual, como se muestra en la siguiente figura:

Haga clic con el botón derecho en el archivo libTestJniSo.so y haga clic en "Saltar a la base del módulo". en el cuadro emergente”, salte a la dirección inicial del archivo libTestJniSo.so.

Presione Alt+T e ingrese "Java_com_example_testjniso_MainActivity_helloFromJni" en el cuadro de diálogo de búsqueda que aparece, como se muestra en la siguiente figura:

Después de hacer clic en el botón "Aceptar", puede salte a la función Java_com_example_testjniso_MainActivity_helloFromJni.

Luego establezca un punto de interrupción en la dirección:

Presione F9 para reiniciar la depuración, haga clic en el botón "Haga clic para cargar el archivo" en la aplicación para recargar libTestJniSo.so, y podrá consulte El programa se detuvo exitosamente en el punto de interrupción:

En este punto, puede depurar el archivo so normalmente.

¿Qué es Linker?

El enlazador es /system/lib/linker. Es el primer módulo que se carga cuando se inicia el proceso. Es responsable de gestionar la carga y ejecución de los archivos ejecutables elf y varios archivos so, y también participa en. depuración. En términos sencillos, es un intérprete de archivos elfos. Puede cargar archivos ejecutables elf y bibliotecas dinámicas.

En Android 5.0, Android_server no se puede ejecutar porque el vinculador que viene con Android 5.0 no admite la carga de archivos elf que no sean Pie. Sin embargo, si implementa un vinculador que pueda cargar Pie, puede resolver este problema. . ¿Ya? Así es, soy Jiang Zi, agrega tu propio enlazador personalizado en el archivo adjunto.

/thread-206084.htm