Como usar o ponto de interrupção condicional no Eclipse?


117

Eu quero saber como colocar um ponto de interrupção condicional no Eclipse. Eu tenho um código como:

public static void doForAllTabs(String[] tablist){
    for(int i = 0; i<tablist.length;i++){
-->        doIt(tablist[i]);
    }
}

Agora, quero colocar um ponto de interrupção na linha com a seta, mas quero que ele seja acionado apenas se:

tablist[i].equalsIgnoreCase("LEADDELEGATES");

Respostas:


179

Coloque seu ponto de interrupção. Clique com o botão direito na imagem do ponto de interrupção na margem e escolha Propriedades do ponto de interrupção :

insira a descrição da imagem aqui

Configure a condição como achar adequado:

insira a descrição da imagem aqui


9
O Eclipse mais recente também inclui essas opções diretamente no Breakpoints View.
Michael Brewer-Davis

1
Obrigado companheiro! economizou muito do meu tempo! :)
MozenRath

8
Uau! Tenho usado: if(condition){System.out.println("debug");}e publicado na declaração impressa há anos.
Cruncher de

5
Não se esqueça de OMITAR o ;no final - Ocorreu um erro ao incluí-lo.
modulitos

Muito obrigado! Isso foi muito útil.
hfontanez

11

Faça um ponto de interrupção normal na doIt(tablist[i]);linha

Clique com o botão direito -> Propriedades

Marque 'Condicional'

Entrar tablist[i].equalsIgnoreCase("LEADDELEGATES")


Você não precisa de um ponto-e-vírgula no final da expressão? Só posso fazer os pontos de interrupção condicionais funcionarem se adicionar o ponto-e-vírgula (e nem sempre).
Cajunluke

3
@CajunLuke O mesmo aqui. Eu apenas tentei com um final T[](tipo não genérico) e obtenha Conditional breakpoint has compilation error(s). Curiosamente, minha condição é bonds==nulle o Motivo na caixa de diálogo de erro é invalid AssignmentOperator. suspiro Às vezes, o Eclipse se comporta mais como um ser humano de 12 anos do que um software de 12 anos.
KomodoDave

3

Da Eclipsepedia sobre como definir um ponto de interrupção condicional:

Primeiro, defina um ponto de interrupção em um determinado local. Em seguida, use o menu de contexto no ponto de interrupção na margem esquerda do editor ou na visualização Pontos de interrupção na perspectiva Depurar e selecione as propriedades do ponto de interrupção. Na caixa de diálogo, marque Habilitar condição e insira uma condição Java arbitrária, como list.size()==0. Agora, cada vez que o ponto de interrupção é atingido, a expressão é avaliada no contexto da execução do ponto de interrupção e o ponto de interrupção é ignorado ou respeitado, dependendo do resultado da expressão.

As condições também podem ser expressas em termos de outros atributos de ponto de interrupção, como contagem de ocorrências.


Seu link não foi ?codificado. Experimente isso .
KomodoDave

Obrigado, agradeço

2

1. Crie uma classe

public class Test {

 public static void main(String[] args) {
    // TODO Auto-generated method stub
     String s[] = {"app","amm","abb","akk","all"};
     doForAllTabs(s);

 }
 public static void doForAllTabs(String[] tablist){
     for(int i = 0; i<tablist.length;i++){
         System.out.println(tablist[i]);
    }
  }
}

2. Clique com o botão direito no lado esquerdo de System.out.println (tablist [i]); no Eclipse -> selecione Alternar Ponto de Interrupção

3. Clique com o botão direito no ponto de alternância -> selecione Propriedades do ponto de interrupção

4. Marque a caixa de seleção condicional -> escreva tablist [i] .equalsIgnoreCase ("amm") no campo de texto -> Clique em OK

5. Clique com o botão direito em classe -> Depurar como -> Aplicativo Java

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.