2011-03-21 97 views
5

Estoy usando netbeans 6.1.Obteniendo 'shmemBase_attach failed: El sistema no puede encontrar el archivo especificado' al intentar adjuntarlo a applet para depurar

Tengo el siguiente en mis Java se ejecutan ajustes de tiempo:

-agentlib: jdwp = = dt_shmem transporte, dirección = jdbconn, servidor = y, suspender = n

y la siguiente en el diálogo adjuntar en NetBeans:

depurador: JPDA depurador

conector: memoria compartida Attach (adjuntar ES por la memoria compartida a otras máquinas virtuales)

Transporte: dt_shmem

Nombre: jdbconn

que consiguieron los ajustes anteriores en la página FaqDebuggingAppletRemotely en los netbeans Wiki.

El applet está en una página aspx (el applet, que está firmado, es un método de comunicación a través del navegador del cliente a una plataforma heredada, realmente soy un desarrollador de C#). Me las he arreglado para conseguir la advertencia de seguridad para mostrar lo que me da la oportunidad de unir al applet, pero siempre que intente conectar veo:

Colocación en jdbconn

shmemBase_attach falló: el sistema no puede encuentre el archivo especificado

en la ventana de salida en netbeans.

¡Toda ayuda recibida con gratitud!

Respuesta

0

Cuando depura con la opción de memoria compartida (transport = dt_shmem), está utilizando objetos de memoria interna compartida de Windows para comunicarse entre el depurador y el jvm.

Esto significa que si usted es:

a. Sin depurar desde la misma máquina física que su jvm, o

b. No funciona en un sistema operativo Windows,

No puede depurar en este modo.

No estoy seguro de qué pasaría si ejecutara una ventana en una VM en una estación Linux ... Podría funcionar y podría no funcionar.

Si ambas cosas están bien, se necesitaría una investigación más profunda para descubrir el problema, pero mientras tanto, podría adjuntarlo con un socket simple.

En los parámetros de tiempo de ejecución Java especifique:

-Xdebug -Xrunjdwp: transport = dt_socket, servidor = S, = dirección de 8000, suspender = y

Esto le dice a la JVM para funcionar en modo de depuración, cargue la biblioteca jdwp, espere a que se conecte la conexión en el puerto 8000 y suspenda la ejecución hasta que llegue dicha conexión.

En su IDE configure el depurador remoto en consecuencia. No conozco Netbeans, pero sería algo así como Connector = conector de socket, address = 8000. Cuando inicie su página web, el applet congelará la carga hasta que se conecte y, por supuesto, no podrá conectarse hasta que haya llegado a la etapa de escucha.

¡Buena suerte!

-1

Apostaría cualquier cosa (casi cualquier cosa ... tal vez unos pocos dólares o una cookie) que la instalación de JVM en la que se ejecutan sus applets NO coincide con la instalación de JVM predeterminada que está instalada en su sistema.

Para encontrar la instalación JVM que su navegador y applets están utilizando en Windows 7:

1) Cierre todas las aplicaciones que utilizan la JVM (especialmente el navegador).

2) Abra el administrador de tareas de Windows (CTRL + ALT + DELETE-> Administrador de tareas), y haga clic en la pestaña de procesos.

3) Asegúrese de que no haya ningún proceso java * .exe ejecutándose.

4) Abra su navegador y vaya a la página de applets, y vuelva a iniciar el applet.

5) Ahora regrese al Administrador de tareas-> pestaña Procesos y busque el java * .exe que se está ejecutando (lo más probable es que sea "java.exe * 32" literalmente, ya que literalmente tendrá un asterisco en el nombre del proceso. Si no ve ese, simplemente use el que se está ejecutando).

6) Haga clic derecho en ese proceso, y en el menú contextual seleccione "Abrir ubicación de archivo". Esto debería llevarlo a la ubicación de la carpeta "bin" de la JVM instalada que está utilizando su navegador para ejecutar sus applets. ¿Te sorprende que no sea lo mismo que pensaste que sería?

Para encontrar la tarea de Linux u otros sistemas de:

sólo he tenido este problema en Windows, pero aquí es cómo lo hace de todos modos.

Abra un shell y escriba lo siguiente

ps -e | grep java 

y hacer una nota de la pid (s).

Ahora que ya sabe lo que JVM los applets están utilizando:

tenemos que abrir la consola de Java para que la instalación partivular (en oposición a la instalación por defecto tratamos de modificar antes).

para abrir la consola de la instalación JVM que los applets están utilizando, y establecer los parámetros de tiempo de ejecución:

1) abrir una línea de comandos (shell o lo que sea) en la carpeta bin de la instalación de la JVM. (En Windows 7, desde el explorador, puede desplazar + clic con el botón derecho en la carpeta bin y seleccionar "Abrir símbolo del sistema aquí").

2) ejecute el siguiente comando para abrir la consola:

javaws -viewer 

Esto también acaba de abrir la ventana "Visor de caché de Java", que no necesitamos. Cierre esa ventana, pero mantenga abierta la ventana "Panel de control de Java".

3) Ahora puede ir a la pestaña de Java, pulse sobre visualizar y modificar los parámetros de tiempo de ejecución tal como lo hizo antes:

-agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n 

4) Haga clic en "OK" y haga clic en "Aplicar" en la ventana principal de la consola java para aplicar y guardar todos los cambios que ha realizado.

5) ¡ESPERE! Hay una última cosa que te sugiero que hagas; limpiar el caché de Java Web Start para asegurarse de que los applets descarga fresca utilizando los nuevos parámetros:

javaws -uninstall 

Asegúrese de ejecutar este en el directorio bin de la instalación JVM que los applets están utilizando, ya que esto podría no ser el el mismo directorio bin al que señala su variable de entorno del sistema Path (o PATH).

¡Ahora inicie su applet desde su navegador y cree otra conexión de memoria compartida dentro de su NetBeans IDE! Configure puntos de interrupción en el código fuente correcto que está depurando (pestaña "fuente" en NetBeans), y comience a usar su applet. ¡Ahora debería ver que Netbeans está rompiendo sus puntos de quiebre!

Al menos, espero que sí ...

Cuestiones relacionadas