Depuradores: notas de release

1.0 Introducción
2.0 Problemas conocidos
   2.1 Entorno de desarrollo Web
   2.2 Depuración de WebSphere Application Server
   2.3 Depurador de JavaScript
   2.4 Depurador de procedimientos almacenados SQL
   2.5 Herramientas de prueba y despliegue (Server Tools)
   2.6 El depurador de las herramientas de desarrollo Java (JDT)
   2.7 Limitaciones de los idiomas nacionales
   2.8 Depurador de procedimientos almacenados SQL (Linux)
   2.9 Depurador de SQLJ

1.0 Introducción

Los depuradores de WebSphere Studio proporcionan las herramientas necesarias para depurar aplicaciones Web, JavaScript del lado del servidor, Java, SQLJ, procedimientos almacenados SQL y lenguajes compilados. En este archivo readme se describen los problemas conocidos y las limitaciones que están asociadas a los depuradores de WebSphere Studio.

2.0 Problemas conocidos

2.1 Entorno de desarrollo Web

Depuración de JSP:

2.2 Depuración de WebSphere Application Server

2.3 Depurador de JavaScript

2.4 Depurador de procedimientos almacenados SQL

2.5 Herramientas de prueba y despliegue (Server Tools)

Tenga en cuenta las siguientes consideraciones al decidir que va ejecutar un servidor en modalidad de depuración:

2.6 El depurador de las herramientas de desarrollo Java (JDT)

La información sobre los problemas conocidos y las limitaciones de las herramientas de desarrollo Java (JDT) está disponible en las notas de release de las herramientas de desarrollo Java (JDT) y en las notas de release del entorno de trabajo (IDE). Se accede a ellas desde el archivo readme principal del producto, que se instala junto con este producto.

2.7 Limitaciones de los idiomas nacionales

2.8 Depurador de procedimientos almacenados SQL (Linux)

Si depura un procedimiento almacenado SQL en una base de datos local, es posible que reciba el mensaje de error número SQL1224N:

COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1224N No se ha podido iniciar un agente de base de datos para atender una petición, o bien el agente ha terminado como resultado de un cierre del sistema de base de datos o de un mandato de forzar. SLSTATE=55032

Esto se debe a un problema del kernel de Linux (Linux kernel Bugzilla error número 351). Para salir al paso de este problema, se dan las siguientes instrucciones, que utilizan el método de conexión TCPIP de DB2 (como bucle de retorno), en lugar de la interfaz a nivel de llamada (CLI). Este procedimiento permitirá al depurador utilizar el mismo alias de base de datos que antes:

  1. Si no se ha configurado un puerto para los clientes remotos de DB2, cree un puerto TCP/IP en /etc/services, (por ejemplo, db2cdb2inst1 50000/tcp # DB2 connection service port). Puede utilizarse un puerto existente para los clientes remotos de DB2.

    Para los pasos del 2 al 7, a continuación, debe iniciar sesión como propietario de la instancia de DB2.

  2. Configure el gestor de bases de datos para que inicie el gestor de conexiones del protocolo de comunicaciones TCP/IP. Si no está seguro de si esto ya se ha realizado, emita el mandato:
    db2set db2comm

    Si la salida no contiene la palabra clave tcpip, tendrá que entrar el siguiente mandato con el fin de actualizar la variable de registro db2comm para que incluya tcpip:

    db2set db2comm=<nombres de protocolos existentes>,tcpip

    La variable de registro db2comm determina qué gestor de conexiones de protocolo se habilitará al iniciarse el gestor de bases de datos. Puede establecer esta variable para múltiples protocolos de comunicaciones separando las palabras clave con comas; por ejemplo, db2set db2comm=tcpip,appc.

    Tendrá que volver a emitir el mandato db2start para iniciar los gestores de conexiones de los protocolos especificados en el parámetro de registro db2comm. Dado que reiniciaremos DB2 en el paso 7 que figura a continuación, no hace falta hacerlo ahora

    .
  3. Actualice el parámetro de configuración de gestor de bases de datos SVCENAME con el nombre de servicio de conexión definido en /etc/services (paso 1).

    Para obtener el valor actual de SVCENAME, entre el mandato:

    db2 get dbm cfg | grep -i svcename

    Si tiene que actualizar el valor de SVCENAME, entre el mandato:

    db2 update dbm cfg using svcename <nombre de servicio de conexión>

    Aquí, <nombre de servicio de conexión> es una serie sensible a las mayúsculas/minúsculas y debe coincidir con el nombre del puerto de servicio que colocó en /etc/services (por ejemplo, db2 update dbm cfg using svcename db2cdb2inst1).

    La actualización de la configuración del gestor de bases de datos no entrará en vigor hasta que se emita el siguiente mandato db2start. Lo haremos en el paso 7, a continuación.

  4. Catalogue el nodo del bucle de retorno entrando el mandato:
    db2 catalog tcpip node <nombre de nodo> remote 127.0.0.1 server <nombre de servicio de conexión>

    Aquí, <nombre de nodo> es un alias local del nodo que se catalogará. Es un nombre arbitrario de la estación de trabajo, que se utiliza para identificar el nodo (por ejemplo, db2 catalog tcpip node minodo remote 127.0.0.1 server db2cdb2inst1).

    Para verificar que el mandato catalog ha funcionado como es debido, emita el mandato:

    db2 list node directory

    A continuación figura una salida de ejemplo de este mandato (aunque se han eliminado las líneas en blanco por cuestión de legibilidad):

    Directorio de nodo
    Número de entradas en el directorio = 1
    Entrada de nodo 1:
    Nombre de nodo = MINODO
    Comentario =
    Protocolo = TCPIP
    Nombre sistpral = 127.0.0.1
    Nombre de servicio = db2cdb2inst1
  5. Catalogue la base de datos como se indica a continuación. Si desea seguir la pista del efecto de cada mandato, vea los mandatos que se dan a continuación para generar la salida de ejemplo:
    1. db2 catalog db <nombre de base de datos> as <alias de base de datos>
    2. db2 uncatalog db <nombre de base de datos>
    3. db2 catalog db <alias de base de datos as <nombre de base de datos> at node <nombre de nodo>
    Por ejemplo,
    db2 catalog db WAS as WASLOOP
    db2 uncatalog db WAS
    db2 catalog db WASLOOP as WAS at node MINODO

    Notas:

    • El alias de la base de datos puede ser el nombre que desee, pero no puede coincidir con el nombre de la base de datos.
    • Recibirá el mensaje de error número SQL1334N si no ha catalogado correctamente la base de datos.
    • Tendrá que repetir los pasos del 5a al 5c para cada base de datos en la que desee depurar un procedimiento almacenado.

    Salida de ejemplo para los pasos del 5a al 5c

    Antes del paso 5a, ya se ha creado una base de datos local que se llama WAS. El mandato db2 list db directory tiene la siguiente salida:

    Directorio de base de datos del sistema
    Número de entradas en el directorio = 1

    Entrada de base de datos 1:

    Alias de base de datos = WAS
    Nombre de base de datos = WAS
    Directorio de base de datos local = /home/ctsui
    Nivel de release de la base de datos = 9.00
    Comentario =
    Tipo de entrada de directorio = Indirecta
    Número de nodo de catálogo = 0

    Después del paso 5a, la salida del mandato db2 list db directory sería:

    Directorio de base de datos del sistema
    Número de entradas en el directorio = 2

    Entrada de base de datos 1:

    Alias de base de datos = WAS
    Nombre de base de datos = WAS
    Directorio de base de datos local = /home/ctsui
    Nivel de release de la base de datos = 9.00
    Comentario =
    Tipo de entrada de directorio = Indirecta
    Número de nodo de catálogo = 0

    Entrada de base de datos 2:

    Alias de base de datos = WASLOOP
    Nombre de base de datos = WAS
    Directorio de base de datos local = /home/ctsui
    Nivel de release de la base de datos = 9.00
    Comentario =
    Tipo de entrada de directorio = Indirecta
    Número de nodo de catálogo = 0

    Después del paso 5b, la salida del mandato db2 list db directory sería:

    Directorio de base de datos del sistema
    Número de entradas en el directorio = 1

    Entrada de base de datos 1:

    Alias de base de datos = WASLOOP
    Nombre de base de datos = WAS
    Directorio de base de datos local = /home/ctsui
    Nivel de release de la base de datos = 9.00
    Comentario =
    Tipo de entrada de directorio = Indirecta
    Número de nodo de catálogo = 0

    Después del paso 5c, la salida del mandato db2 list db directory sería:

    Directorio de base de datos del sistema
    Número de entradas en el directorio = 2

    Entrada de base de datos 1:

    Alias de base de datos = WAS
    Nombre de base de datos = WASLOOP
    Nombre de nodo = MINODO
    Nivel de release de la base de datos = 9.00
    Comentario =
    Tipo de entrada de directorio = Remota
    Número de nodo de catálogo = -1

    Entrada de base de datos 2:

    Alias de base de datos = WASLOOP
    Nombre de base de datos = WAS
    Directorio de base de datos local = /home/ctsui
    Nivel de release de la base de datos = 9.00
    Comentario =
    Tipo de entrada de directorio = Indirecta
    Número de nodo de catálogo = 0

    Para verificar que el mandato catalog db ha funcionado como es debido, emita los dos mandatos siguientes (y vea la salida de ejemplo que figura a continuación):

    db2 connect to wasloop
    db2 connect to was

    Aquí, el mandato db2 connect to wasloop debe imprimir la información de conexión, y el mandato db2 connect to was debe proporcionarle el mensaje SQL1403N.

    Salida de ejemplo del mandato db2 connect to wasloop:

    Información de conexión a base de datos
    Directorio de base de datos del sistema

    Servidor de base de datos = DB2/6000 6.1.0
    ID de autorización SQL = CTSUI
    Alias de base de datos local = WASLOOP

    Salida de ejemplo del mandato db2 connect to was:

    SQL1403N El nombre de usuario y/o la contraseña suministrada es incorrecta. SQLSTATE=08004
  6. Actualice el mecanismo de autenticación para que sea Autenticación de cliente. Entre el mandato:
    db2 update dbm cfg using authentication client

    Para verificar que el mandato ha funcionado como es debido, visualice el nuevo valor emitiendo el mandato:

    db2 get dbm cfg

    Salida de ejemplo:

    ....
    Autenticación de gestor de bases de datos        (AUTHENTICATION) = CLIENT
    ....
  7. Reinicie DB2 para renovar la antememoria del directorio. Por ejemplo,
    db2stop
    db2start
  8. En el caso de WAS, no hace falta actualizar el archivo admin.config. En el caso de una aplicación de Websphere, no hace falta cambiar la configuración de origen de datos existente.
  9. Si desea desactivar la base de datos, haga lo siguiente:
    1. db2 attach to <nombre de nodo> user <ID de usuario> using <contraseña>
    2. db2 drop db <nombre de base de datos>
      Por ejemplo, db2 attach to MINODO user miid using micontrsña
      db2 drop db WAS

2.9 Depurador de SQLJ

Cuando se realiza un intercambio dinámico mientras se depura con la JVM J9, si hay métodos SQLJ en la pila de llamadas, recibiría un diálogo Métodos obsoletos en la pila. Si el intercambio dinámico fue de una clase SQLJ, la clase se recargará en la JVM, pero no se verá el código nuevo que se ejecuta hasta la próxima vez que se llame a un método de la clase.

Si hace un intercambio dinámico de una clase SQLJ, los puntos de interrupción de SQLJ podrían no funcionar para esta clase durante la sesión de depuración actual.

Volver al archivo readme principal