Depuradores - Notas sobre o Release

1.0 Introdução
2.0 Problemas Conhecidos
   2.1 Ambiente de Desenvolvimento da Web
   2.2 Depuração do WebSphere Application Server
   2.3 Depurador de JavaScript
   2.4 Depurador de Procedimento Armazenado SQL
   2.5 Ferramentas de Teste e de Implementação (Ferramentas do Servidor)
   2.6 Depurador de JDT (Java Development Tools)
   2.7 Limitações do Idioma Nacional
   2.8 Depurador de Procedimento Armazenado de SQL (Linux)
   2.9 Depurador de SQLJ

1.0 Introdução

Os depuradores do WebSphere Studio fornecem as ferramentas necessárias para depurar aplicativos da Web, JavaScript do lado do servidor, Java, SQLJ, Procedimentos Armazenados de SQL e linguagens compiladas. Este arquivo readme descreve os problemas e limitações conhecidos que estão associados aos depuradores do WebSphere Studio.

2.0 Problemas Conhecidos

2.1 Ambiente de Desenvolvimento da Web

Depuração de JSP:

2.2 Depuração do WebSphere Application Server

2.3 Depurador de JavaScript

2.4 Depurador de Procedimento Armazenado SQL

2.5 Ferramentas de Teste e de Implementação (Ferramentas do Servidor)

Considere o seguinte, quando decidir executar um servidor no modo de depuração:

2.6 Depurador de JDT (Java Development Tools)

Informações sobre problemas e limitações conhecidos das Java development tools estão disponíveis nas notas sobre o release de JDT (Java Development Tools) e nas notas sobre o release de Workbench (IDE). Elas estão vinculadas ao LEIA-ME do produto principal instalado com esse produto.

2.7 Limitações do Idioma Nacional

2.8 Depurador de Procedimento Armazenado de SQL (Linux)

Quando você estiver depurando um Procedimento Armazenado de SQL em um banco de dados local, é possível receber o erro número SQL1224N:

COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1224N A database agent could not be started to service a request, or was terminated as a result of a database system shutdown or a force command. SQLSTATE=55032

Isso ocorre devido a um problema no kernel do Linux (Linux kernel Bugzilla bug #351). As instruções a seguir indicam uma solução alternativa que utiliza o método de conexão TCPIP do DB2 (como um loopback) em vez de uma CLI (Call Level Interface). Esse procedimento permitirá que o depurador utilize o mesmo alias de banco de dados que antes:

  1. Se uma porta para clientes DB2 remotos não tiver sido configurada, crie uma porta TCP/IP no diretório /etc/services, (por exemplo, db2cdb2inst1 50000/tcp # DB2 connection service port). Uma porta existente para clientes DB2 remotos pode ser utilizada.

    As etapas de 2 a 7 abaixo requerem que você efetue login como o proprietário da instância do DB2.

  2. Configure o gerenciador de banco de dados para iniciar o gerenciador de conexões para o protocolo de comunicação TCP/IP. Se você não tiver certeza se isso já foi feito, emita o seguinte comando:
    db2set db2comm

    Se a saída não contiver a palavra-chave tcpip, será necessário inserir o seguinte comando para atualizar a variável de registro db2comm para incluir tcpip:

    db2set db2comm=<existing protocol names>,tcpip

    A variável de registro db2comm determina qual gerenciador de conexões do protocolo será ativado quando o gerenciador de banco de dados for iniciado. Você pode definir essa variável para vários protocolos de comunicação, separando as palavras-chave por vírgulas, por exemplo, db2set db2comm=tcpip,appc.

    Será necessário emitir novamente o comando db2start para iniciar os gerenciadores de conexões para os protocolos especificados pelo parâmetro de registro db2comm. Como o DB2 será iniciado novamente na etapa 7 abaixo, não será necessário fazer isso agora.

    .
  3. Atualize o parâmetro de configuração do gerenciador de banco de dados SVCENAME com o nome do serviço de conexão definido no diretório /etc/services (etapa 1).

    Para verificar a definição atual do SVCENAME, insira o seguinte comando:

    db2 get dbm cfg | grep -i svcename

    Se for necessário atualizar a definição de SVCENAME, insira o seguinte comando:

    db2 update dbm cfg using svcename <connection service name>

    em que <connection service name> faz distinção entre maiúsculas e minúsculas e deve corresponder ao nome da porta de serviço colocada no diretório /etc/services (por exemplo, db2 update dbm cfg using svcename db2cdb2inst1).

    A atualização da configuração do gerenciador de banco de dados não será efetivada até que o próximo comando db2start seja emitido. Isso será feito na etapa 7 abaixo.

  4. Catalogue o nó de loopback inserindo o seguinte comando:
    db2 catalog tcpip node <nodename> remote 127.0.0.1 server <connection service name>

    em que <nodename> é um alias local para o nó a ser catalogado. Esse é um nome arbitrário na estação de trabalho, utilizado para identificar o nó (por exemplo, db2 catalog tcpip node mynode remote 127.0.0.1 server db2cdb2inst1).

    Para verificar se o comando do catálogo funcionou corretamente, emita o seguinte comando:

    db2 list node directory

    Uma saída de amostra desse comando é (linhas em branco foram removidas por questão de legibilidade):

    Node Directory
    Number of entries in the directory = 1
    Node 1 entry:
    Node name = MYNODE
    Comment =
    Protocol = TCPIP
    Hostname = 127.0.0.1
    Service name = db2cdb2inst1
  5. Catalogue o banco de dados da seguinte forma. Consulte os comandos fornecidos abaixo para gerar saída de amostra se quiser monitorar os efeitos de cada comando.
    1. db2 catalog db <database name> as <database alias>
    2. db2 uncatalog db <database name>
    3. db2 catalog db <database alias as <database name> at node <nodename>
    por exemplo,
    db2 catalog db WAS as WASLOOP
    db2 uncatalog db WAS
    db2 catalog db WASLOOP as WAS at node MYNODE

    Notas:

    • O alias do banco de dados pode ser qualquer nome, mas não pode ser igual ao nome do banco de dados.
    • O erro número SQL1334N será recebido se o banco de dados não tiver sido catalogado corretamente.
    • Será necessário repetir as etapas 5a a 5c para cada banco de dados no qual você deseja depurar um procedimento armazenado.

    Saída de Amostra das Etapas 5a a 5c

    Antes da etapa 5a, um banco de dados local denominado WAS já havia sido criado. O comando db2 list db directory tem a seguinte saída:

    System Database Directory
    Number of entries in the directory = 1

    Database 1 entry:

    Database alias = WAS
    Database name = WAS
    Local database directory = /home/ctsui
    Database release level = 9.00
    Comment =
    Directory entry type = Indirect
    Catalog node number = 0

    Depois da etapa 5a, db2 list db directory tem a seguinte saída:

    System Database Directory
    Number of entries in the directory = 2

    Database 1 entry:

    Database alias = WAS
    Database name = WAS
    Local database directory = /home/ctsui
    Database release level = 9.00
    Comment =
    Directory entry type = Indirect
    Catalog node number = 0

    Database 2 entry:

    Database alias = WASLOOP
    Database name = WAS
    Local database directory = /home/ctsui
    Database release level = 9.00
    Comment =
    Directory entry type = Indirect
    Catalog node number = 0

    Depois da etapa 5b, db2 list db directory tem a seguinte saída:

    System Database Directory
    Number of entries in the directory = 1

    Database 1 entry:

    Database alias = WASLOOP
    Database name = WAS
    Local database directory = /home/ctsui
    Database release level = 9.00
    Comment =
    Directory entry type = Indirect
    Catalog node number = 0

    Depois da etapa 5c, db2 list db directory tem a seguinte saída:

    System Database Directory
    Number of entries in the directory = 2

    Database 1 entry:

    Database alias = WAS
    Database name = WASLOOP
    Node name = MYNODE
    Database release level = 9.00
    Comment =
    Directory entry type = Remote
    Catalog node number = -1

    Database 2 entry:

    Database alias = WASLOOP
    Database name = WAS
    Local database directory = /home/ctsui
    Database release level = 9.00
    Comment =
    Directory entry type = Indirect
    Catalog node number = 0

    Para verificar se o comando catalog db funcionou corretamente, emita os dois comandos a seguir (e veja a saída de amostra abaixo):

    db2 connect to wasloop
    db2 connect to was

    em que db2 connect to wasloop deve imprimir as informações sobre a conexão e db2 connect to was deve fornecer SQL1403N.

    Saída de amostra do db2 connect to wasloop:

    Database Connection Information
    System Database Directory

    Database server = DB2/6000 6.1.0
    SQL authorization ID = CTSUI
    Local database alias = WASLOOP

    Saída de amostra do db2 connect to was:

    SQL1403N The username and/or password supplied is incorrect. SQLSTATE=08004
  6. Atualize o mecanismo de autenticação para Client authentication. Insira o comando:
    db2 update dbm cfg using authentication client

    Para verificar se o comando funcionou corretamente, exiba a nova definição com o seguinte comando:

    db2 get dbm cfg

    Saída de amostra:

    ....
    Database manager authentication         (AUTHENTICATION) = CLIENT
    ....
  7. Reinicie o DB2 para atualizar o cache do diretório. Por exemplo:
    db2stop
    db2start
  8. Para o WAS, não é necessário atualizar o arquivo admin.config. Para um aplicativo do WebSphere, não é necessário alterar a configuração da datasource existente.
  9. Se quiser eliminar o banco de dados, faça o seguinte:
    1. db2 attach to <nodename> user <userid> using <password>
    2. db2 drop db <database name>
      por exemplo, db2 attach to MYNODE user myid using mypasswd
      db2 drop db WAS

2.9 Depurador de SQLJ

Ao executar troca a quente durante a depuração com a J9 JVM, se houver algum método de SQLJ na pilha de chamada, aparecerá o diálogo Obsolete methods on the stack. Se a troca a quente era de uma classe de SQLJ, a classe será recarregada na JVM, mas você não verá o novo código em execução até a próxima vez que um método da classe for chamado.

Se você trocar a quente uma classe de SQLJ, os pontos de interrupção de SQLJ poderão não funcionar para essa classe durante a sessão de depuração atual.

Retornar para o arquivo Readme principal