Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Depurando com a Plataforma Eclipse

Use o Eclipse para depurar seus projetos de software

Chris Aniszczyk, Software Engineer, IBM
Chris Aniszczyk
Chris Aniszczyk é um engenheiro de software na IBM Lotus cujo enfoque é desenvolvimento relacionado a OSGi. Entusiasta em software livre, trabalha na distribuição do Gentoo Linux e é committer em alguns projetos Eclipse (PDE, ECF, EMFT). Sempre está disponível para falar sobre software livre e o Eclipse, tomando uma bebida gelada.
Pawel Leszek, Independent Software Consultant, 自由职业者
Pawel Leszek, um dos autores do Studio B, é consultor independente de software e autor especializado em arquitetura e administração do sistema Linux/Win/Mac OS. Tem experiência em muitos sistemas operacionais, linguagens de programação e protocolos de rede, especialmente Lotus Domino e DB2. Pawel também é o autor da série de artigos do "LinuxWorld" e é colunista do Linux na edição polonesa do "PC World." Ele vive em Varsóvia com sua esposa e uma filha pequena adorável. Perguntas e comentários são bem-vindos; envie um email diretamente para pawel.leszek@ipgate.pl.

Resumo:  Descubra como usar os recursos de depuração integrados na Plataforma Eclipse para depuração de projetos de software. Depuração é algo que programadores não podem evitar. Há muitos modos de cuidar dela, mas essencialmente se resume em localizar o código responsável pelo erro. Por exemplo, um dos erros mais comuns nos aplicativos Linux® é conhecido como falha de segmentação. Isso ocorre quando um programa tenta acessar memória não alocada pare ele e termina com uma violação de segmentação. Para corrigir esse tipo de erro, é necessário localizar a linha do código que aciona o comportamento. Uma vez encontrada a linha do código em questão, também será útil conhecer o contexto em que o erro ocorre, e os valores, variáveis e métodos associados. O uso de um depurador torna o aprendizado de tais informações muito simples.

Data:  06/Fev/2012
Nível:  Intermediário Também disponível em :   Inglês
Atividade:  333 visualizações
Comentários:  


Nota do editor: O artigo a seguir foi escrito originalmente por Pawel Leszek, em maio de 2003, e atualizado em abril de 2007 por Chris Aniszczyk.

O depurador do Eclipse e a visualização Debug

O Eclipse SDK -- em especial, o projeto Java™ Development Tools (JDT) -- apresenta um depurador Java integrado que fornece toda a funcionalidade de depuração, incluindo a capacidade de realizar execução por etapas, configurar pontos de interrupção e valores, inspecionar variáveis e valores, e suspender e retomar encadeamentos. Adicionalmente, é possível depurar aplicativos executando em uma máquina remota. A Plataforma Eclipse é robusta de tal modo que outras linguagens de programação podem usar os recursos de depuração dos seus respectivos tempos de execução de linguagem. Como você verá abaixo, a mesma visualização Debug do Eclipse também está disponível para as linguagens de programação C/C++.

O ambiente de trabalho da plataforma Eclipse e suas ferramentas são desenvolvidos em torno dos componentes JDT, que fornecem os seguintes recursos para o Eclipse:

  • Ferramentas de gerenciamento de projeto
  • Perspectivas e visualizações
  • Funções Builder, editor, procura e desenvolvimento
  • O depurador

O depurador do Eclipse existe como um conjunto padrão de plug-ins incluído no Eclipse. O Eclipse também tem uma visualização de depuração especial que permite o gerenciamento da depuração ou execução de um programa no ambiente de trabalho. Ele exibe a estrutura da pilha dos encadeamentos suspensos para cada destino que você está depurando. Cada encadeamento no programa aparece como um nó na árvore e a visualização Debug exibe o processo de cada destino que você está executando. Se o encadeamento estiver suspenso, suas estruturas de pilha são mostradas como elementos filho.

Antes de começar a usar o depurador do Eclipse, presume-se que você tenha o Java SDK/JRE apropriado (recomendo usar o Java VM V1.4) e o Eclipse Platform SDK V3.3 instalado, e que ambos estejam executando sem problemas. No geral, é uma boa ideia testar as opções de depuração usando as amostras do Eclipse primeiro. Se você deseja desenvolver e depurar projetos C/C++ , terá adicionalmente de obter e instalar as C/C++ Development Tools (CDT). Sobre links para o Java SDK/JRE, a plataforma Eclipse e amostras, e as CDT, consulte Recursos. A Figura 1 mostra a visualização geral da perspectiva Debug.


Figura 1. Visão geral da perspectiva Debug do Eclipse


Depurando programas da linguagem Java

Antes que seja possível depurar seu projeto, o código precisa compilar e executar de modo nítido. É necessário criar uma configuração de execução para o seu aplicativo e assegurar que ele inicie devidamente. Em seguida, é necessário definir a configuração de depuração em um modo similar usando o menu Run > Debug. Também é necessário selecionar a classe a ser usada como a classe Java principal pelo depurador (veja a Figura 2). É possível ter tantas configurações de depuração para um único projeto quanto desejado. Quando o depurador é iniciado (em Run > Debug), ele é aberto em uma nova janela, e você está pronto a iniciar a depuração.


Figura 2. Configurando a classe Java principal do projeto na configuração de depuração


Em seguida, discutiremos algumas das práticas de depuração comuns no Eclipse.

Configurando pontos de interrupção

Ao iniciar o aplicativo para depuração, o Eclipse alterna para a perspectiva Debug automaticamente. Indubitavelmente, o procedimento de depuração mais comum é configurar pontos de interrupção que permitirão a inspeção de variáveis e valores dentro de instruções condicionais ou loops. Para configurar pontos de interrupção na visualização Package Explorer da perspectiva Java, clique duas vezes no arquivo do código de origem selecionado para abri-lo no editor. Percorra o código e posicione o cursor na barra de marcação (ao longo da borda esquerda da área do editor) na linha com o código suspeito. Clique duas vezes para definir o ponto de interrupção.


Figura 3. Dois marcadores de pontos de interrupção visíveis na margem esquerda do editor


Agora, inicie a sessão de depuração no menu Run > Debug. É importante não colocar várias instruções em uma única linha porque não é possível depurar parcialmente ou definir pontos de interrupção de linhas em mais de uma instrução na mesma linha.


Figura 4. A visualização indica a linha atualmente em execução com seta na margem esquerda


Também há uma visualização Breakpoints conveniente para gerenciar todos os pontos de interrupção.


Figura 5. Visualização Breakpoints


Pontos de interrupção condicionais

Assim que identificar o local onde o erro está, você desejará saber o que o programa está fazendo certo antes de travar. Um modo de fazer isso é percorrer cada instrução no programa, um por vez, até atingir o ponto de preocupação. Algumas vezes, é melhor apenas executar uma seção de código e interromper a execução nesse ponto de modo que seja possível examinar os dados nesse local. É possível declarar pontos de interrupção condicionais acionados todas as vezes que o valor de uma expressão muda (veja a Figura 6). Em adição, o assistente de código está disponível quando você digita na expressão condicional.


Figura 6. Configurando o acionador de ponto de interrupção condicional


Avaliando expressões

Para avaliar expressões no editor, na perspectiva Debug, selecione a linha inteira onde o ponto de interrupção está definido e, no menu de contexto, selecione a opção Inspect via Ctrl+Shift+I ou clicando com o botão direito do mouse na variável em que você está interessado (veja a Figura 7). A expressão é avaliada no contexto da estrutura de pilha atual, e os resultados são exibidos na visualização Expressions da janela Display.


Figura 7. Avaliando expressões com a opção Inspect


Fazendo um scrapbook do seu código ativo

A visualização Display permite que você manipule código ativo em um scrapbook tipo fashion (veja a Figura 8). Para manipular uma variável, simplesmente digite o nome da variável na visualização Display, e você será saudado com um assistente de conteúdo familiar.


Figura 8. A visualização Display


Quando o depurador para em um ponto de interrupção, é possível continuar a sessão do depurador selecionando a opção Step Over na barra de ferramentas da visualização Debug (veja a Figura 9). Isso ignora a linha de código destacada e continua a execução na próxima linha no mesmo método (ou continuará no método a partir do qual o método atual foi chamado). As variáveis que são alteradas como resultado da última etapa são destacadas em uma cor (o padrão é amarelo). As cores podem ser alteradas nas páginas de preferências da depuração.


Figura 9. Variáveis que mudam de cores


Para suspender a execução dos encadeamentos na visualização Debug, selecione um encadeamento em execução e clique em Suspend na barra de ferramentas da visualização Debug. A pilha de chamadas atual para o encadeamento é exibida, e a linha atual da execução é destacada no editor na perspectiva Debug. Quando um encadeamento é suspenso, o cursor é colocado sobre uma variável no editor Java e o valor dessa variável é exibido em uma janela pequena de ajuda instantânea. Além disso, a estrutura de pilha superior do encadeamento é automaticamente selecionada, e as variáveis visíveis nessa estrutura de pilha são exibidas na visualização Variables. É possível examinar a variável apropriada na visualização Variables clicando no seu nome.

Hotswap Bug Fixing: correção imediata de código

Se estiver executando o Java Virtual Machine (JVM) V1.4 ou posterior, o Eclipse suporta um recurso denominado Hotswap Bug Fixing (não disponível na JVM V1.3 ou inferior). Ele permite a alteração do código de origem durante uma sessão do depurador, que é melhor que sair do aplicativo, alterar o código, recompilar e iniciar outra sessão de depuração. Para usar essa função, simplesmente mude o código no editor e retome a depuração. Esse recurso tornou-se disponível porque o JVM V1.4 é compatível com a Java Platform Debugger Architecture (JPDA). A JPDA implementa a capacidade de substituir código modificado em um aplicativo em execução. Evidentemente, isso é especialmente útil quando leva um longo tempo para iniciar o aplicativo ou para iniciar o aplicativo ou acessar o ponto onde ele falha.

Se o programa não tiver executado completamente quando a depuração estiver concluída, selecione a opção Terminate no menu de contexto, na visualização Debug. Um erro comum é usar Debug ou Run em vez de Resume enquanto estiver em uma sessão do depurador. Isso ativará outra sessão do depurador em vez de dar continuidade na sessão atual.


Depuração remota

O depurador do Eclipse oferece uma opção interessante para depurar aplicativos remotos. É possível conectar a uma VM remota executando um aplicativo Java e conectar a si mesmo ao aplicativo. Trabalhar com uma sessão de depuração remota é muito similar a depurar localmente. No entanto, uma configuração de depuração remota requer configurações diferentes na janela Run > Debug. É necessário primeiro selecionar a entrada Remote Java Application, na visualização esquerda, e clicar em New. Uma nova configuração de ativação remota é criada e três guias são mostradas: Connect, Source e Common.

No campo Project da guia Connect, selecione que projeto usar como uma referência para a ativação (para consulta de código de origem). No campo Host da guia Connect, digite o endereço IP ou nome do domínio do host remoto onde o programa Java está executando. No campo Port da guia Connect, digite a porta onde a VM remota está aceitando conexões. Geralmente, essa porta é especificada quando a VM remota é ativada. Selecione a opção Allow termination of remote VM quando quiser que o depurador determine se o comando Terminate estará disponível em uma sessão remota. Selecione essa opção para ter a possibilidade de terminar a VM à qual está se conectando. Agora, ao selecionar a opção Debug, o depurador tentará se conectar a uma VM remota no endereço e porta especificados, e o resultado será exibido na visualização Debug.

Se o ativador não for capaz de se conectar a uma VM no endereço especificado, uma mensagem de erro aparecerá. No geral, a disponibilidade da função de depuração remota depende estritamente da Java VM em execução no host remoto. A Figura 10 mostra a configuração das propriedades da conexão para uma sessão de depuração remota.


Figura 10. Configurando as propriedades da conexão para uma sessão de depuração remota



Depurando outras linguagens

Embora a linguagem Java seja a mais amplamente usada no Eclipse, tal plataforma é extensível e pode suportar diversas outras. O Eclipse suporta C/C++ por meio do projeto C/C++ Development Tools (CDT). O CDT estende a visualização Debug do Eclipse com funções para depurar código C/C++, e a visualização CDT Debug permite que você gerencie a depuração de projetos C/C++ no ambiente de trabalho. O CDT não inclui seu depurador interno, mas oferece um front-end para o depurador GNU GDB, que deve estar disponível localmente. Há outros projetos como o PHP Development Tools (PDT) que oferecem seus respectivos depuradores (veja a Figura 11).


Figura 11. Depurador PHP



Conclusão

O Eclipse Platform apresenta um depurador de linguagem Java integrado com a funcionalidade de depuração padrão, incluindo a capacidade de realizar execução por etapas, configurar pontos de interrupção e valores, inspecionar variáveis e valores, e suspender e retomar encadeamentos. É usado também para depurar aplicativos em execução em uma máquina remota. A plataforma Eclipse é principalmente um ambiente de desenvolvimento Java, mas a mesma visualização Eclipse Debug também está disponível para C/C++, PHP e diversas outras linguagens de programação.


Agradecimentos

Obrigado a Tyler Anderson por criar a Figura 11.


Recursos

Aprender

Obter produtos e tecnologias

Discutir

  • Confira Grupos de notícias do Eclipse CDT para obter ajuda de desenvolvimento sobre a depuração do C/C++. (Selecionar isso ativará o aplicativo do leitor de notícias Usenet padrão e abrirá o open eclipse.tools.cdt.)

  • Confira Grupos de notícias do Eclipse ATF para obter ajuda de desenvolvimento sobre depuração do JavaScript. (Selecionar isso ativará o aplicativo do leitor de notícias Usenet padrão e abrirá o eclipse.webtools.atf.)

  • Confira Newsgroup da Plataforma Eclipse para fazer perguntas sobre depuração e outras perguntas relacionadas à plataforma Eclipse. (A seleção deste link ativará seu aplicativo leitor de notícias Usenet padrão e abrirá eclipse.platform.)

  • O programa Newsgroup da Plataforma Eclipse deverá ser sua primeira parada para discussão das questões relacionadas ao Eclipse. (A seleção deste link ativará seu aplicativo leitor de notícias Usenet padrão e abrirá eclipse.platform.)

  • O programa Newsgroup do Eclipse tem muitos recursos para pessoas interessadas no uso e na extensão do Eclipse.

  • Participe dos blogs do developerWorks e participe da comunidade do developerWorks.

Sobre os autores

Chris Aniszczyk

Chris Aniszczyk é um engenheiro de software na IBM Lotus cujo enfoque é desenvolvimento relacionado a OSGi. Entusiasta em software livre, trabalha na distribuição do Gentoo Linux e é committer em alguns projetos Eclipse (PDE, ECF, EMFT). Sempre está disponível para falar sobre software livre e o Eclipse, tomando uma bebida gelada.

Pawel Leszek, um dos autores do Studio B, é consultor independente de software e autor especializado em arquitetura e administração do sistema Linux/Win/Mac OS. Tem experiência em muitos sistemas operacionais, linguagens de programação e protocolos de rede, especialmente Lotus Domino e DB2. Pawel também é o autor da série de artigos do "LinuxWorld" e é colunista do Linux na edição polonesa do "PC World." Ele vive em Varsóvia com sua esposa e uma filha pequena adorável. Perguntas e comentários são bem-vindos; envie um email diretamente para pawel.leszek@ipgate.pl.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=789322
ArticleTitle=Depurando com a Plataforma Eclipse
publish-date=02062012

Conheça a IBM da sua cidade

Virtual Branch Office Brasil

A IBM está mais perto do que você imagina!


Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).