Cómo analizar la memoria de las aplicaciones de Android (15) - Visual Studio Code depuración de aplicaciones de Android

Cómo analizar la memoria de las aplicaciones de Android (15) - Visual Studio Code depuración de aplicaciones de Android

En el artículo anterior, presentamos la depuración jdb de aplicaciones java.
A continuación, presentaremos el uso de la interfaz UI para depurar aplicaciones java para lograr el mismo efecto que jdb.
Hay muchas opciones para la misma interfaz de usuario, como Eclipse, Android Studio y Visual Studio Code. Debido a los muchos inconvenientes de Android Studio y en función de sus propios hábitos de uso, aquí recomendamos e presentamos Visual Studio Code.

Instalar complementos necesarios

En el mercado de complementos, busque Debugger para Java, como se muestra a continuación
Insertar descripción de la imagen aquí

Para ver sus requisitos, también necesita instalar un complemento: Language Support for Java™ de Red Hat.
Búsquelo en el mercado de complementos e instálelo, como se muestra a continuación.
Insertar descripción de la imagen aquí

  • Soporte de lenguaje para Java™ de Red Hat: búsqueda de código, mensajes contextuales y otras funciones.
  • Depurador para java: función de depuración

Por supuesto, también puede instalar directamente el paquete Extension Pack para Java, que contiene los dos complementos anteriores, así como otros complementos necesarios para el desarrollo de Java.

Para ver los datos de forma más cómoda, puede instalar un complemento: Debug Visualizer.
Insertar descripción de la imagen aquí

Debug Visualizer puede mostrar la relación entre variables gráficamente

Configurar adjuntar al proceso de destino

Menú->Ejecutar->Abrir Configuración
Insertar descripción de la imagen aquí

Agregue el siguiente contenido al archivo de configuración:

{
    
    
    "launch": {
    
    
        "configurations": [
            ...
            {
    
    
                //debugger for java插件对应的一个名字。必须为java
                "type": "java",
                //给这个配置取的一个名字
                "name": "远程调试Android应用",
                //因为是远程调试,只能为attach
                "request": "attach",
                //远程调试的主机名,使用了adb forward 映射到了本地,因此为:localhost
                "hostName": "localhost",
                //远程调试的端口号,使用了adb forward映射到了5039
                "port": 5039,
                //需要调试的源代码文件
                //第一个是我们测试APP的源文件位置
                //第二个是http://t.csdn.cn/JBnld中下载的Android 12的源码
                "sourcePaths": [
                    "/Users/biaowan/AndroidStudioProjects/Test_Malloc.old/app/src/main/java",
                    "/Users/biaowan/aosp/frameworks/base/core/java"
                ]
            }
        ]
    },
}

Como se muestra abajo
Insertar descripción de la imagen aquí

En la imagen de arriba, los dos primeros muestran cómo Android analiza la memoria de la aplicación (4): la configuración de depuración utilizada en LLDB del código de Visual Studio.

empezar a probar

  1. Agregue puntos de interrupción
    y use VSCode para abrir el archivo de proyecto de nuestra APLICACIÓN de prueba. Luego abra MainActivity.java
    , agregue un punto de interrupción en onCreate y compruébelo. Como se muestra abajo
    Insertar descripción de la imagen aquí

  2. Deténgase cuando se inicie la aplicación.
    De acuerdo con Android Cómo analizar la memoria de la aplicación (14), la sección de depuración instantánea en la línea de comando jdb, ejecute el siguiente código:

adb shell am set-debug-app -w com.example.test_malloc

Luego inicie la aplicación. En este momento, la aplicación debería detenerse y mostrar: Esperando el depurador. Para obtener
procedimientos detallados, consulte: Cómo analizar la memoria de la aplicación en Android (14) - línea de comando jdb

  1. Reenviar puerto
    Ejecute el siguiente comando para reenviar el puerto dentro del dispositivo Android a la máquina local 5039
pid=($(adb shell ps -A |grep -i  malloc)) ; echo ${pid[2]};adb forward tcp:5039 jdwp:${pid[2]};
  1. Para ejecutar la depuración de VSCode
    , use el comando de tecla de acceso directo +p para ingresar al cuadro de búsqueda de archivos e ingrese: depurar más un espacio. Simplemente seleccione el depurador correspondiente.
    Insertar descripción de la imagen aquí

Todo es normal, entonces vscode se detendrá en nuestro punto de interrupción, de la siguiente manera:
Insertar descripción de la imagen aquí

Como arriba, puede ver casi todo lo que necesita para la depuración diaria. como

  1. Ver y modificar variables
  2. Agregar, eliminar punto de observación
  3. Marco de pila de interruptores
  4. Pausar un solo hilo
  5. excepción de captura

Sin embargo, el complemento del depurador de vscode no proporciona una interfaz para ejecutar comandos jdb directamente. En su consola sólo se pueden ejecutar expresiones. como sigue
Insertar descripción de la imagen aquí

solución de problemas

Problema: las expresiones no se ejecutan correctamente si están en la consola de depuración

resolver:

  • Cambiar marcos de pila y variables
  • Cambie la versión del complemento o actualice a la última

Visualizador de depuración para ver la estructura de datos

El tercer complemento Debug Visualizer se instaló anteriormente y se puede utilizar para ver la estructura de datos. Puede ver todo lo que aparece en el punto de observación, de la siguiente manera.

  1. comando+shitf+p: abre el cuadro de entrada de comando

  2. Tipo: Visualizador de depuración: Nueva vista
    Insertar descripción de la imagen aquí

  3. Luego, en el cuadro de interfaz de usuario recién abierto, ingrese una variable que deba verse. Como se muestra abajo
    Insertar descripción de la imagen aquí

Al ajustar el tamaño, podemos ver claramente la relación entre las variables.

Nota: Actualmente, Debug Visualizer solo puede ver variables del marco de pila actual.

En este punto, se completa la introducción a la depuración de Java de VSCode.

Aquí debemos explicar por qué no se introduce la depuración de Java de Android Studio. A juzgar por mis hábitos de uso actuales. Android Studio es ideal para desarrolladores de aplicaciones. Sin embargo, existen varias deficiencias:

  • La depuración de aplicaciones de otras personas solo tiene código fuente y no se puede compilar, lo que dificulta la depuración, como las aplicaciones nativas.
  • Android Studio se ejecuta de forma anormal y se congela

Por lo tanto, ya sea que sea un desarrollador de aplicaciones o un desarrollador de Framework, se recomienda utilizar código VS para la depuración.

La siguiente sección presentará cómo verificar la memoria del montón de Android. Parece que ha llegado el momento más crítico para las aplicaciones de Android. Manténganse al tanto

Supongo que te gusta

Origin blog.csdn.net/xiaowanbiao123/article/details/132067245
Recomendado
Clasificación