Debuggen liefert anderes Ergebnis als Ausführen

Status
Nicht offen für weitere Antworten.

anand

Mitglied
Hey leute

ich schreibe mein problem deshalb in den bereich web tier weil ich myfaces verwende und ich nicht weiß ob mein problem daran liegen kann. oder ob netbeans einen bug hat


Ich hab einen ganz komischen Fehler:

Ich entwickle in Netbeans und deploye mein projekt mit tomcat. wenn ich das Projekt normal starte bekomme ich einen indexoutofbound fehler, wenn ich das ganze debugge dann funktioniert es wenn ich in die problem funktion reinspringe, überspringe ich die funktion kommt wieder der fehler... bin recht ratlos.

mein code:

Java:
....
oDot = dcon.executeDLV(graph);  //PROBLEMATISCHER FUNKTIONSAUFRUF
oGraphml = gcon.createOutputGRAPHMLs(oDot, graph);
....

Die Funktion im detail
DIR ist eine konstante
Java:
public String[] executeDLV(Graph graph){
        Program dlvprog = new Program();
        DlvHandler dlvhandler = new DlvHandler(DIR + "dlv.mingw.exe");

        dlvprog.addString(graph.getInputDOT());
        dlvprog.addProgramFile(getProgPath(new Integer(graph.getProg())));

        dlvhandler.setProgram(dlvprog);
        dlvhandler.setPFilter(new String[]{"in"});

        try {
            dlvhandler.run();
            String[] output = new String[dlvhandler.getSize()];
            int i=0;

            while (dlvhandler.hasMoreModels()) {
                Model mod = dlvhandler.nextModel();

                output[i] = mod.toString();

                i++;
            }

            return output;
        } catch (DLVInvocationException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return null;
    }

kann es sein dass der degubber manche variablen anderst instanziert oder warum kann das sonst sein?

nochmal wenn ich diese fun ktion mit dem debugger durchlaufe, dann funktioniert alles, wenn ich diese funktion mit dem debugger überspringe oder das programm normal ausführe wirft die funktion einen fehler

ich hoffe ihr könnt mir helfen!

lg
anand
 

Landei

Top Contributor
Kann das mit Multithreading zusammenhängen? Ist dlvhandler eventuell von Thread abgeleitet? Dann solltest du statt dlvhandler.run() mal dlvhandler.start() ausprobieren.

Falls nicht, versuche mal das hier:
Java:
        try {
            dlvhandler.run();
            List<String> output = new ArrayList<String>();
            while (dlvhandler.hasMoreModels()) {
                Model mod = dlvhandler.nextModel();
                output.add(mod.toString());
            }
 
            return output.toArray(new String[]{});
        } catch (DLVInvocationException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
 

anand

Mitglied
hey landei

wenn ich deinen codteil mit meinem austausche, dann funktioniert alles...

warum? gleiche funktion nur anderst geschrieben
das verstehe ich nicht

kannst du mir das erklären?

danke danke und lg



-------- ZUSATZ --------
ICh denke ich hab das problem ausfindig gemacht

ich verwende in meiner variante die funktion
Java:
dvlhandler.GETSIZE();

In der beschreibung der funktion steht dass man bei verwendung dieser sehr vorsichtig sein soll
da ich bei der arraylist die funktion nicht brache geht nun alles

danke für den lösungsansatz!
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben