Problema com o Debug no Eclipse

3 respostas
S

Pessoal,

Bom dia,

Estou desenvolvendo alguns projetos no Eclipse mas já estou pra ficar louco e preciso da ajuda de vocês…Seguinte:

Mecho com programação a quase 10 anos, mas por algum motivo, causa ou razão, só comecei a usar as ferramentas de DEBUG esse ano :? . Bom o fato é que eu gostei do bixo, principalmente da parte em que você pode alterar alguns valores/parâmetros no código em quanto o programa está em execução e já da pra perceber a alteração realizada. Só que aí é que está o problema.

Eu tenho dois projetos. Em um essa funcionalidade está OK. Se eu faço uma alteração dentro de um loop no projeto A, essa alteração aparece no programa que está em execução, mas no projeto B, isso não funciona!!! No projeto A basta eu alterar algum valor, no código mesmo, e salvar que já aparece no programa em execução, já no programa B isso não acontece!!!

O fato é que agora que to usando DEBUG não quero mais saber de outra coisa, chega de alterar um valor e executar o programa, finalizar, alterar e executar…eu quero ver as alterações on-line!! Mas não sei porque em um funciona e em outro não…

Alguém pode me ajudar? :roll:

Desde já agradeço a atenção.

Afonso Lage.

3 Respostas

K

São projetos WEB?
Você comentou “alterar e salvar”. Esse negocio de alterar o código fonte, salvar, e já valer em tempo de debug, comigo nunca funcionou em projetos WEB.

S

Kael,

Não são projetos web, mas descobri o que era. Depois de muito ler e entender o HotSwap, o problema é que isso só funciona com métodos. Quando coloquei o pedaço de código em um novo método, funcionou!

Por exemplo, no código abaixo se vc alterar o valor de ctr para ctr++.
Assim não funciona:

public class Test {
    private static int ctr = 0;
    public static void main(String[] args) {
        while (true) {
           System.out.println(ctr);
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                System.err.println("Interrupted");
            }
        }
    }
}

Mas assim funciona:

public class Test {
    private static int ctr = 0;
    public static void main(String[] args) {
        while (true) {
            method();
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                System.err.println("Interrupted");
            }
        }
    }

    private static void method() {
        System.out.println(ctr);
    }
}

Simplesmente porque está em um método e não no corpo do main!

Obrigado pela atenção!

Afonso Lage.

R

EDIT: postei no tópico errado…

Criado 20 de julho de 2012
Ultima resposta 20 de jul. de 2012
Respostas 3
Participantes 3