Hallo!
ich verwende C# um verschiedene Berechnungen durchzuführen. Um für erste Tests zu prüfen, ob die Berechnung korrekt ist, halte ich die Programmausführung an und schaue mir die Variablen im Debugger an. Manche Daten lassen sich besser in Diagrammen anschauen, daher habe ich eine DLL geschrieben und eingebunden, die die Daten in einem Windows form-Fenster graphisch anzeigt (soll so ähnlich wie in Matlab funktionieren). Jetzt habe ich folgendes Problem:
Wenn ich nach der Berechnung das Programm mit dem Debugger stoppe, friert auch das Diagrammfenster ein und lässt sich nicht mehr bedienen (vergrößern, drucken, speichern, usw.). Daher ist der aktuelle Ansatz unbrauchbar. Das Diagrammfenster soll, wenn das Berechnungsprogramm angehalten wurde, noch voll bedienbar sein. Welchen grundsätzlichen Ansatz würdet Ihr wählen, um dieses Problem zu lösen?
Klar, du hältst ja das gesamte Ding an.
Ich glaub auch nicht dass es da eine schnelle Lösung gibt. Warum ist dir das so wichtig, das Fenster bedienen zu können und der Rest des Programms bleibt stehen?
Du könntest dir alle Variablen ins Fenster ausgeben lassen, dann kannst du sie ohne anhalten sehen.
Oder noch besser mal ein Log schreiben 😃
Dann brauchst du nicht zu debuggen und das Programm läuft weiter.
Ebenfalls hast du dann alles zum prüfen da.
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
Danke erstmal.
Das Loggen der Variablen ist nicht so einfach, es handelt sich um verschiedene Arrays unterschiedlicher Datentypen, Länge teilweise über 10E5 Werte, die der Debugger eigentlich schön in Tabellen darstellt. Ich habe folgende Idee: Ich erzeuge ne separate Anwendung (Diagramm), die per IPC mit der in meinem Programm (Berechnung) eingebundenen DLL kommuniziert. Über IPC werden dann die Daten rübergeschoben. Ich hatte allerdings gehofft, es gibt etwas einfacheres.
Log schreiben ist keine schlechte Idee, find ich. Du kannst es ja auch entsprechend formatieren.
Du könntest dein Diagrammfenster auch als Debugger Visualizer in Visual Studio einbinden.
Hallo,
Deien Anforderung kommt mir auch etwas seltsam vor Ein Vorgang wie das Anhalten durch einen Debugger wird einem Programm im Nutzfall nie passieren:
Klar, du hältst ja das gesamte Ding an.
Und auch Dein Vorgehen mit IPC wird dir IMO nichts nützen, wenn Du dann im GUI-Progamm debuggen willst.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Hallo Kontur,
ich bin mir nicht sicher, ob der Debugger das Problem ist, aber letztlich ist das egal.
Natürlich ist es wie MarsStein sagt: wenn du den GUI-Thread debuggst wird das Fenster immer einfrieren. Die Alternative Logging wurde ja schon genannt. Oder man muss eben mit dem Einfrieren leben.
Auf der anderen Seite sprichst du ja über Berechnungen bzw. das Anhalten derselben. Dadurch das Anhalten der Berechnung muss das GUI nicht blockieren und man muss die Berechnungen auch nicht in einen extra Prozess auslagern, um das GUI nicht blockiert, sondern es reicht, wenn man sich an das Standardvorgehen für (langlaufende) Berechnungen hält, siehe [FAQ] Warum blockiert mein GUI?
Das im ersten (inhaltlichen) Absatz gesagte benötigt keine weitere Klärung. Das im zweiten Absatz gesagte fällt unter Grundlagen. Insofern ist es dann letztlich auch wieder egal, ob es ein Problem mit dem Debugger ist oder mit dem Programmaufbau. Du solltest jetzt alleine weiterkommen.
herbivore