2009-05-15 21 views

Respuesta

26

This article is a bit old pero sigue siendo relevante (incluida una sección titulada "Cómo depurar applets en el complemento Java").

Editar: quizás una mejor manera de obtener stacktraces es usar el Java plugin console. Si presiona "t" en esa ventana, verá lo siguiente:

Imprime todos los grupos de subprocesos existentes. El primer grupo que se muestra es el grupo principal. ac significa recuento activo; es es la cantidad total de hilos activos en un grupo de hilos y sus grupos de hilos secundarios . agc significa recuento de grupo activo ; es el número de grupos de hilos secundarios activos de un grupo de hilos. pri significa prioridad; es la prioridad de un grupo de hilos. Siguiendo Grupo principal, otros grupos de subprocesos serán se mostrarán como Grupo, donde el nombre es la URL asociada a un applet. listados individuales de hilos se muestran el nombre hilo, la prioridad hilo , vivo si el hilo está vivo o destruido si el hilo está en el proceso de ser destruido , y daemon si el hilo es un hilo daemon.

El otro comando que he utilizado más a menudo de que la consola es el nivel de seguimiento de 0-5:

Esto establece las opciones de nivel de seguimiento como se describe en la siguiente sección, Tracing and Logging.

Desde esa página, verá que los niveles se ven así:

  • 0 - off
  • 1 - basic
  • 2 - red, caché, y
  • 3 básica - seguridad, red y básico
  • 4 - extensión, la seguridad, la red y básico
  • 5 - LiveConnect , la extensión, la seguridad, la red, temporales y básicos

Estas herramientas pueden todos ser bastante útil como usted está tratando de desentrañar lo que en el mundo se ha metido en la cabeza de ustedes r applets. Sé que han trabajado para mí.

3

Los rastreos de pila de excepciones no detectadas aparecerán en la consola. Esto se puede habilitar desde el Panel de control de Java (Avanzado> Consola Java> Consola de demostración) o algunos navegadores tienen varias opciones o complementos para habilitarlo.

Puede adjuntar un depurador al proceso PlugIn en ejecución.

Quizás la mejor manera es no depurar en absoluto. Escribir pruebas. Escriba un código que no se corresponda con suposiciones innecesarias, por ejemplo, que se está ejecutando como un applet. Lamentablemente, la mayoría del código de ejemplo de GUI/applet está escrito muy mal.

1

Se envían excepciones no detectadas a la consola. También puede usar System.out para escribir sus propios mensajes en la consola. Para ver los resultados, deberá abrir la consola haciendo clic con el botón derecho en el icono de Java en la bandeja del sistema y abriendo la consola (tenga en cuenta que esto es diferente para la VM de Microsoft).

Para depurar los applets correctamente, puede configurar Eclipse para depurar los applets. Haga clic con el botón derecho en el archivo fuente del applet y haga clic en Depurar como applet. (Si tiene parámetros para el applet, deberá configurarlo). Luego, puede recorrer el código del applet para depurar cualquier otro código Java.

53

Además del uso obvio de la consola Java y el visor de applets, a partir de la actualización 7 de Java 6, puede usar el que viene con el JDK (JDK_HOME/bin/visualvm). Le permite ver las trazas de pila de cada subproceso e incluso ver todas las instancias de objeto.

AppletViewer es muy útil, puede ejecutar "Ejecutar como/Java Applet" desde Eclipse para ejecutar, o "Depurar como/Java Applet" para depurar las clases de su applet.

Sin embargo, a veces para depurar algunas cuestiones relacionadas con la seguridad, el entorno del complemento del navegador es muy diferente de appletviewer. Esto es lo que puede hacer para depurar eficazmente los applets en el navegador:

1) Obtener información de depuración de los binarios

de copia de seguridad de los archivos .jar de JRE_HOME/lib

(Descargar e) Instalar una JDK para la misma versión que tu JRE.

Copiar los archivos .jar de JDK_HOME/jre/lib a JRE_HOME/lib

Los archivos dentro del JDK se compila con la información de depuración incluido (código fuente de información número de línea, los nombres de variables, etc) y la Los archivos JRE no tienen esta información.

Sin esto, no podrá entrar significativamente en el código de clase principal en su depurador.

2) Habilitar depuración para el Java Plug-in

vaya al control de Java/ / Configuración de ejecución de Java/ Ver/ usuario/ parámetros de ejecución de Java del panel

Y añada las opciones para habilitar la depuración. Algo como esto:

-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=2502,server=y,suspend=n 

Las opciones interesantes son el puerto (usando 2502 aquí, se puede utilizar casi cualquier puerto libre, justo lo escriba para más adelante) y la suspensión de - si es necesario depurar el applet inicio, carga de clases, etc., configure esto en "y". De esta forma, cuando acceda a una página de applet, el navegador parecerá congelarse ya que la JVM se suspenderá inmediatamente a la espera de la conexión de un depurador.

3) Use su IDE favorito para depurar de forma remota el Java Plug-in

En Eclipse, por ejemplo, seleccione Ejecutar/Depurar configuraciones .../Aplicación Java remota

Haga clic en la " Nuevo "botón.

Asegúrese de que el tipo de conexión sea "Socket Attach", elija localhost como el host si su navegador es local y el puerto que seleccionó anteriormente (2502 en el ejemplo).

Es posible que deba incluir src.zip en su JDK en la pestaña de fuentes para tener disponibles las fuentes de la clase principal de Java.

Guarde la configuración, y una vez que su navegador ejecute el complemento (con la JVM suspendida o no) ejecute el depurador remoto para conectarse a la JVM del complemento, con un proyecto que contiene las fuentes de su applet abiertas.

+0

muy interesante, particularmente el poco sobre la depuración de un IDE (Eclipse, por ejemplo), pero no puedo hacer que funcione ... ¿Hay más información en alguna parte a la que me puede remitir? – posdef

+4

En Windows 2008 (supongo que lo mismo es cierto para Windows 7) tuve que ejecutar IE como administrador para que esto funcione. Usé el transporte de memoria compartida. – axk

+0

Sí, Windows 7 se comporta de la misma manera. Gracias axk! – Zeemee

1

Me enfrenté a un problema al hacer una depuración remota de applet, cada vez que intentaba conectarme de eclipse, sus intentos de conexión se negaron, mi versión de jre fue de 64 bits y eclipse de 32 bits, cuando reemplacé con jre de 32 bits trabajó para mi. Además, si instalamos ambas versiones de jre de 32 bits & de 64 bits, IE utiliza por defecto jre de 64 bits para los applets, Chrome y FF pueden usar versiones jre de 32 bits.

1

Para mí, la acción más importante para obtener la depuración de applets en eclipse es establecer en el panel de control java (tab java) los binarios correctos que se usarán, que tienen símbolos de depuración. Solo JRE incluido en jdk tiene estos símbolos. Para depurar applet en el panel de control java, tab java, presione el botón de vista, luego busque la jre correcta en la carpeta jdk, para mí, por ejemplo, "C: \ Programmi \ Java \ jdk1.7.0_03 \ jre", y ponga la verificación habilitada solo para esta entrada. Esta es para mí la manera más limpia de hacer lo que dice Sami Koivu.

+0

Estoy de acuerdo en que esta es una forma mucho más limpia. –

Cuestiones relacionadas