Debuggen funktioniert nicht nach bereits erfolgtem Debuggen



  • Hallo ihr Lieben,

    ich habe ein sehr großes Programm geschrieben, bei dem es nicht zweckdienlich ist, hier alles reinzuspoten, da sich der Fehler so wohl nicht finden lässt (Suche der Nadel im Heuhaufen^^).

    Trozdessen hoffe ich auf Hilfe!

    Wenn ich mein Programm im Visual Studio starte über Debugging, dann funktioniert alles, wenn ich das Programm in dem Debuggmodus beende und dann erneut debuggen will (mit UND ohne Änderungen), dann erhalte ich folgende Fehlermeldung:

    Der Vorgang konnte nicht abgeschlossen werden.
    Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderem Prozess verwendet wird.

    Hat jeamnd den leisesten Schimmer, woran das liegen KÖNNTE?
    Ich arbeite unter Windows 7 und das Programm legt per Streamwriter oftmals Txtdateien ab und löscht diese beim Beenden restlos, damit nichts zurückbleibt, kann es damit zu tun haben. Am Freitag lief es noch einwandfrei und auch da hatte ich schon ein riesiges Programm, der Zustand lässt sich nicht wieder auf den Ursprung zurückführen, da ich nicht genau weiß, wann der Fehler eintrat.



  • Klingt nach einem offenen Handle.. vielleicht auf die Hauptassembly, vielleicht auf die vhost-assembly oder auch gut möglich dass es sich um eine Textdatei handelt. Check das einfach mal mit dem ProcessExplorer oder dem Tool deiner Wahl.



  • Was heißt denn genau offener Handle?
    Das mit der Assembly habe ich sogar verstanden, weil ich das schonmal hatte, wo das Programm beendet wurde, die Mainassembly aber davor nur mit Hide versteckt wurde und demnach wohl noch im Hintergrund war.

    Meinst du mit Prozessexplorer, das Ding im Taskmanager? Wird da nicht nur der allgemeine Task und nicht der spezifische task angezeigt?



  • benutzer_1234 schrieb:

    Meinst du mit Prozessexplorer, das Ding im Taskmanager? Wird da nicht nur der allgemeine Task und nicht der spezifische task angezeigt?

    Mit dem Process Explorer meint er den Process Explorer.



  • benutzer_1234 schrieb:

    Was heißt denn genau offener Handle?

    Na ja, wenn man es grob vereinfacht, dann verwaltet Windows intern Objekte (Fenster, Exe-Dateien, Textdateien, Netzwerkverbindungen, etc.) über Handles. Diese Handles kannst du dir als Pointer auf irgendeine Struktur vorstellen. Wenn jetzt beispielsweise ein Prozess noch eine Datei geöffnet hat und damit arbeitet, dann wäre es ja nicht so toll, wenn du diese Datei von einem anderen Prozess heraus so ohne Probleme überschreiben/löschen könntest. Aus dem Grund verweigert dir Windows da den Zugriff.



  • Ich habe so ein Problem hin und wieder bei der Kommunikation mit Hardwareschnittstellen (COM, LPT...) beobachtet. Trotz Abschießen des Prozesses werden die Handles da manchmal nicht sauber geschlossen, wie es scheint. Mit Dateien hatte ich so ein Problem bislang noch nicht (was natürlich nichts heißen muss). Hast du was in der Richtung Hardwareschnittstelle in deinem Code? Eventuell ist das ja dann die Stelle, an der du den Fehler suchen musst.


  • Administrator

    Auch noch eine Möglichkeit: Anti-Virus.
    Sag deinem Anti-Virus, dass er den Entwicklungsordner ignorieren soll.

    Grüssli



  • Ich habe den Prozessexploerer jetzt mal probiert. Nach dem Beenden meines Programmes war davon noch ein Thread sichtbar, den ich abgeschossen habe über den PE. Seit dem habe ich keine Probleme mehr komsicherweise. Hatte heute auch schon einiges an kosmetischer Nachbearbeitung getätigt, welche nicht geholfen hatten, aber vielleicht ja, weil im Hintergrund eben was schief lief. Jetzt kann ich im Programm machen, was ich will. Der nächste Debug funktioniert. Mal gucken was morgen passiert, aber das Problem scheint erstmal gelöst;)

    Vielen lieben Dank vorerst. Ist jetzt schonmal angenehmer etwas zu ändern ohne ständigen Neustart



  • Das Problem ist sicher nicht gelöst. Wenn du in deinem Programm irgendwas nicht richtig schließt, musst du die Stelle finden und den Bug reparieren. Es schadet nicht, sich gleich beim Schreiben anzugewöhnen, dass zu jedem Open sofort ein Close notiert wird, zu jedem New ein Delete usw...



  • _matze schrieb:

    dass zu jedem Open sofort ein Close notiert wird

    using is da shizzle wit yo sizzle! :p



  • Das Problem ist auch tatsächlich nicht gelöst und dürfte durch open-close irgendwo haken. Möglicherweise bei dem Streamwrite oder Streamread nicht den Datenstrom nicht wieder beendet zu haben oder beim Form.Show Hide.

    Ich gewöhne mir das an, dass Programm hat bereits über 30 Forms und öffnet einige dateien und hat bisher einwandfrei funktioniert, muss dann aber letztens doch mal was vergessen haben.

    Ich werde da jetzt mal suchen, aber wollte nochmal sagen, dass es noch weitere Auffälligkeiten gibt.
    Alle Programme debuggen normal
    Ich kann auch beim PC Neustart oftmals nicht erfolgreich debuggen, er macht manchmal auch nur ne Uhr ohne die Fehlermeldung kurz und macht dann nichts.
    Manchmal muss ich vier fünf mal das Visual Studio neustarten und wenn ich schnell auf debugg gehe, dann gehts manchmal und bis jetzt lief es dann immer, nur sobald ich eine Änderung vorgenommen hatte und dann nochmals debuggen wollte, gings nicht mehr.

    Aber wie gesagt, ich suche mal alles ab, kann sich ja nur um Stunden handeln 😉


Anmelden zum Antworten