Laden...

Visual Studio - Debugging startet nur sporadisch / EXE kann nicht kopiert werden

Erstellt von blume666 vor 13 Jahren Letzter Beitrag vor 9 Jahren 26.387 Views
B
blume666 Themenstarter:in
27 Beiträge seit 2010
vor 13 Jahren
Visual Studio - Debugging startet nur sporadisch / EXE kann nicht kopiert werden

Hallo liebe Community,

ich habe ein Problem mit Visual Studio 2010: Es geht um das Erstellen und Starten der Debug-/Release- Version eines Programms. Manchmal kann die Executable erstellt werden und manchmal nicht. Dann erscheint die Meldung

Fehler 1 Die Datei "obj\x86\Debug\ConsoleApplication1.exe" kann nicht in "bin\Debug\ConsoleApplication1.exe" kopiert werden. Der Prozess kann nicht auf die Datei "bin\Debug\ConsoleApplication1.exe" zugreifen, da sie von einem anderen Prozess verwendet wird. ConsoleApplication1

Nach dem ich dann per Hand die Datei aus dem Debug-Ordner gelöscht habe, wird sie auch erfolgreich erstellt. Möchte ich nun das Debuggen starten, passier nichts. Die Application startet nicht und es erscheint keine Fehlermeldung.

Das komische ist nur, dass nach einiger Zeit die Anwendung wieder gestartet werden kann. Wie gesagt, diese Probleme treten sporadisch auf. Wisst ihr Rat?

Visual Studio 2010 läuft bei mir unter Windows 7 64Bit

mfg
panhans

F
240 Beiträge seit 2006
vor 13 Jahren

Benutzt du zufällig T4 Templates und generierst code aus der assembly? wenn ja, guck dir mal die T4 Toolbox extension sowie die dort enthaltene T4Toolbox.VolatileAssemblyProcessor für das VolatileAssembly tag an.

2.298 Beiträge seit 2010
vor 13 Jahren

Prüf auch mal, ob alle Threads beendet werden. - Wobei das vermutlich nicht der Grund ist, aber ein Gedanke.

Wenn es ein Thread ist, ist das merkwürdige, dass du die Assembly löschen kannst.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

B
blume666 Themenstarter:in
27 Beiträge seit 2010
vor 13 Jahren

Also es ist ja bei jedem Projekt. Es kann auch nur eine einfache Konsolenanwendung sein. Ich benutze auch nur die Templates von VS. Ansonsten keine Drittanbieter-Templates.

Wenn ich einen Ordner mit einer EXE Datei löschen will (über den Explorer), dann bekomme ich ebenfalls ab und wann eine Meldung, dass die Datei von einem Prozess verwendet wird. Im Taskmanager ist sie nicht zu sehen und per Hand kann ich sie dann auch einfach löschen. Ich denke mal, dass das Problem damit auch etwas zu tun hat.

2.298 Beiträge seit 2010
vor 13 Jahren

Ok es ist ein Threading Problem. - Deine Threads werden nicht Ordnungsgemäß beendet.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

B
blume666 Themenstarter:in
27 Beiträge seit 2010
vor 13 Jahren

Ok, es ist ja, wie bereits erwähnt kein reinen VS-Problem. Aber wie kann ich denn erzwingen, dass sich die Threads beenden?

//EDIT: Das Problem tritt auch auf wenn ich einen Ordner lösche, welcher eine EXE beinhaltet. Ich kann den Ordner erst löschen wenn ich vorher die EXE gelöscht habe. Ich finde dazu einfach keine Erklärung.

2.298 Beiträge seit 2010
vor 13 Jahren

Eine unsaubere variante wäre bei Beenden der Applikation diese Hart zu beenden.

Sauberer wäre es denn Threads eine Abbruch Variable (vorzugsweise Boolean) mitzugeben und bei beenden des Programmes true zu setzen, damit der Thread richtig beendet wird.


volatile bool _bStop = false;
Object _oLock = new Object();

private void MyThreadMethod()
{
    do
    {
        // your code here


        lock(_oLock)
        {
            Monitor.Wait(_oLock, 1000);
        }
    }while(!_bStop);
}

protected override void OnClosing(CancelEventArgs e)
{
    _bStop = true;
    lock(_oLock)
    {
        Monitor.Pulse(_oLock);
    }
}


Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

B
blume666 Themenstarter:in
27 Beiträge seit 2010
vor 13 Jahren

Ja ok, danke. Das weiß ich. Ich denke eher mein Problem ist ein Windows-Spezifisches Problem und hat weniger mit meinen Programmen zu tun.

Wie gesagt ich bekomm ja auch eine Fehlermeldung beim löschen eines Ordners, welcher eine exe beinhaltet. D.h. Rechtsklick auf ordner -> Löschen Erst wenn ich da die EXE gelöscht habe kann ich den Ordner selbst entfernen.

P
660 Beiträge seit 2008
vor 13 Jahren

Ist das bei ALLEN ordnern so?
Wenn ja dann ist das ein Windows-Problem, wenn nein dann ist der Prozess noch aktiv.

Versuch mal das Programm "Unlocker". das verrät dir ziemlich genau warum ein programm sich nicht löschen lässt.

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

2.298 Beiträge seit 2010
vor 13 Jahren

Ah! - Ich glaub ich weis jetzt wo das Problem liegt, je nachdem was in den Threads abläuft kann es sein, dass nach Beenden der Anwendung noch nicht alle Threads beendet sind.

Nachdem anschließend alle Threads beendet wurden, ist sie wieder normal zugänglich.

Prüf doch mal nicht nur den Reiter "Anwendungen" sondern auch den Reiter "Prozesse" ob der Prozess darin noch liegt. Denn die Anwendung verschwindet aus "Anwendungen" sobald das Hauptformular beendet wurde.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

I
19 Beiträge seit 2010
vor 13 Jahren

Ich hatte ähnliche Probleme, als mein Projekt auf einem Netzlaufwerk lag.

X
1.177 Beiträge seit 2006
vor 13 Jahren

huhu,

Ich hab dieselbe Entwicklungsumgebung und nicht diese Probleme.

Schau mal im Ressourcenmonitor, ob der Prozess beendet ist (auch wenn ein Prozess im Taskamanager nicht mehr vorhanden ist, so kann er immernoch da sein!) - Im Ressourcenmonitor wird so ein Gesist-Prozess dann grau dargestellt. Hatte sowas mal mit ProjectX und ner defekten Platte. Der versuchte Schreibzugriff lies den Prozess festhängen, auch nachdem er im Taskmanager abgeschossen war.

Da es bei Dir noch andere "exe-Dateien" betrifft, tippe ich allerdings auf den Virenscanner.

😃

Xynratron

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

2.891 Beiträge seit 2004
vor 13 Jahren

Hast du ein Setup-Projekt in der Projektmappe?

U
457 Beiträge seit 2006
vor 12 Jahren

Hallo,

ich bin durch Zufall auf diesen Beitrag gestoßen. Wir haben das selbe Problem und es spielt sich auch alles in einer Windows 7 64Bit Umgebung ab.

Aber zuerst möchte ich sagen, dass es nichts mit den VS direkt zu tun hat und auch nicht mit irgendwelchen Thrads die nicht sauber von der zu kompilierenden Anwendung geschlossen werden oder Ähnliches.

Wir haben jede Menge Aufwand betrieben und sind kurz davor einen Case bei Microosoft aufzumachen.

Problem ist folgendes...

Wenn du deine EXE kompilierst, dann wird es beim ersten Mal funktionieren. Danach aber nicht mehr. Es sei denn du wartest 2-5 Minuten.
Wenn du nun ein zweites mal kompilierst, dann wird die EXE, die zuvor erstellt wurde, gelöscht. Und das passiert unter Windows 7 eben nicht sofort sondern der Befehl zum Löschen landet im Kernel erstmal in einer Queue die abgearbeitet wird. Das kann aber einige Minuten dauern. Wieso das so lange dauert wissen wir aber auch noch nicht.
Fakt ist, dass dieses Problem auch auftachen kann, wenn man einfach mal eine kleine *.txt Datei erstellt, diese speichert und schließt und dann löscht. Im ersten Moment könnte man denken, dass diese Datei wirklich gelöscht wurde aber wenn man im Windows Explorer dann mal die Taste F5 drückt(zum aktualisieren), dann ist die Datei auf einmal wieder da. Sitzt man nun ein paar Minuten vor dem Explorer und drückt munter seine Taste F5 dann kann man beobachten, dass die Datei irgendwann verschwindet.

Ich zerbreche mir auch noch den Kopf darüber wie man das umgehen kann....
Wollte eigentlich schon seit Wochen mal diese Situation an Mark Russinovich schicken. Der kann sowas auf seinem Blog immer ganz schön aufbröseln. UND, er sitzt direkt an der Quelle;-)

5.742 Beiträge seit 2007
vor 12 Jahren

Noch der obligatorische Tipp: Testweise mal den Virenscanner deaktivieren.

U
457 Beiträge seit 2006
vor 12 Jahren

Es ist kein Virenscanner installiert.....

PS: Die Maschine wurde zum Testen aufgesetzt und hängt nicht im Internet:-P

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo,

gibt der ProcessExplorer auch keinen Aufschluss warum die Datei nicht frei ist?

Wenn du VisualNUnit hast dann hängt das manchmal auch -> da kill ich dann einfach den VisualNUnit.exe-Prozess oder VisualNUnitRunner.exe-Prozess.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

U
457 Beiträge seit 2006
vor 12 Jahren

Klar gibt der Process Explorer Auskunft darüber, wieso die Datei gesperrt ist. In allen Fällen ist die Datei vom Prozess SYSTEM im Zugriff. Das zeigen auch alle weiteren Tools an, die aber NICHT den Prozess beenden können. Und bekanntlich sitzt hinter dem SYSTEM ja der Kernel Space.

Wer weiß wie man im Process Monitor vernünftig filtern kann, der wird auch sehr schön sehen können, wie die "Steuerbefehle" zum Löschen eintrudeln und die Datei anschließend verschwindet...

Ich bin allerdings für alle Anregungen offen;-)

U
1.688 Beiträge seit 2007
vor 12 Jahren

Und bekanntlich sitzt hinter dem SYSTEM ja der Kernel Space.

Mithin auch alle Treiber. Gibt's vielleicht einen Filtertreiber für das Dateisystem? Sonstige Besonderheiten? Was passiert z. B. auf einem FAT32-Volume? Wenn das Projekt oder die Textdatei also etwa auf einem USB-Stick mit FAT32 erstellt wird?

U
457 Beiträge seit 2006
vor 12 Jahren

Moin,

also von einem NTFS Stick aus ist das alles kein Problem. Da kann ich kompilieren so oft ich will. Allerdings ist so ein USB Stick eben nicht so schnell wie eine Platte. Und das ist auch ein bisschen das Problem. Nun ja.. unterm Strich ist es aber schon schneller als das ewige Warten:-P

Hmm... Filtertreiber... Also ich habe das Problem auf 4 unterschiedlichen Notebooks festgestellt. Darunter ein Dell mit RAID, Fujitsu und HP.. Bei allen das selbe Problem.

An was für einen Filtertreiber dachtest du genau? Also welches Produkt könnte sowas mitbringen?

U
1.688 Beiträge seit 2007
vor 12 Jahren

An was für einen Filtertreiber dachtest du genau? Also welches Produkt könnte sowas mitbringen?

An sich nichts konkretes. Vielleicht irgendwelche Optimierungsprogramme. Da Virenscanner schon ausgeschlossen ist, evtl. ein Defragmentierungsdienst? Hast Du an einem minimalen System getestet?

Seltsam ist ja schon, dass es auf USB-Sticks funktioniert. Da fiele mir die Option "auf schnelles Entfernen optimieren" ein in den Treiber- bzw. Geräteeigenschaften. Wie sieht es aus, wenn Du diese veränderst? Oder eine externe Festplatte anstelle eines Sticks verwendest?

Ist schon etwas merkwürdig, auch dass es mit Textdateien genau so auftritt. Auf der anderen Seite kann es kein sooo allgemeines Problem, sonst würden deutlich mehr Leute drüber klagen. Welche Gemeinsamkeiten haben also die Laptops? Software? Konfigurationen?

R
3 Beiträge seit 2014
vor 10 Jahren

Hi,
mir ist bewusst ,dass der letzte Beitrag bereits sehr alt ist ...

Doch ich habe das gleiche Problem auf meinem PC .
Es ist ein Windows 7 64Bit System mit einer SSD als Systemdisc.

Hat irgend jemand eine Lösung finden können ?

Bei mir tritt dieses Problem bei den verschiedensten Programm auf.
Aber es liegt immer daran, dass die Datei nicht neu geschrieben werden kann bzw. nicht darauf zugegriffen werden kann.

Vielen Dank für eure Hilfe

16.806 Beiträge seit 2008
vor 10 Jahren

Meist liegt das daran, dass irgendeine Ressource nicht korrekt freigebenen wurde, zB ein unmanaged Speicherbereich oder ein Filehandle etc.. oder ein Thread in einer Endlosschleife steckt.

R
3 Beiträge seit 2014
vor 10 Jahren

Danke für die schnelle Antwort.
Aber ich habe dieses Verhalten bei den verschiedensten Entwicklungsumgebungen. Also nicht nur bei Visual Studio ,sondern auch bei z.B. IAR EWB und Delphi ...

Meistens funktioniert alles super, doch dann kommt der Zeitpunkt wo ich die Meldung bekomme, das nicht auf die Datei zugegriffen werden kann. (verschieden Dateien und Orte).

Es sieht so aus, als ob Windows die Finger an diesen Files hat und dadurch eine andere Software nicht ran kommt.

Es schein etwas damit zu tun zu haben, dass das entsprechende File zuerst gelöscht und dann gleich wieder neu erstellt wird.

16.806 Beiträge seit 2008
vor 10 Jahren

Ich entwickle derzeit (letzten Monate) eine Library für das Managen von Files und mir ist das Verhalten auch unter gekommen.
Es liegt meist an dem ShareMode, wenn man eine Datei öffnet. Die meisten Anwendungen öffnen - obwohl sie nur lesen - eine Datei mit ShareMode = None; kein anderer darf irgendetwas mit der Datei machen, selbst wenn das parallele Lesen kein Thema wäre.

Problem ist: wenn das Handle nicht korrekt verworfen wird bleibt für alle anderen Prozesse die Datei gesperrt.
Ich hatte vor einiger Zeit ein Problem mit mehreren Threads, wo ich diesen Fehler auch begangen hatte: bei jedem Debug war danach die Datei gesperrt. Ich hab ~50 Neustarts gebraucht, bis ich den Fehler gefunden habe.

In welcher Programmiersprache das passiert ist egal, denn alle Sprachen nutzen die Win32 Schnittstellen (müssen), und diese hat eben den Parameter des ShareModes.
In .NET sieht man den ShareMode nicht, da .NET einem das gar nicht anbietet bei einem normalen File.Open(). Nur die FileStream-Klasse ermöglicht das Setzen.

Ich sag nicht, dass genau das das Problem ist: es ähnelt sich nur sehr sehr stark mit meinen Erfahrungen die letzten Monate.

R
212 Beiträge seit 2012
vor 10 Jahren

Das problem stand mal ne zeitlang auf der supportseite von Visual Studio 2013 isn problem an dem du nix machenkannst einfach das Visual Studio neustarten. //Seit dem letzten update is der fehler bei mir zumindest nichtwider aufgetreten

W
955 Beiträge seit 2010
vor 10 Jahren

Virenscanner?

R
3 Beiträge seit 2014
vor 10 Jahren

Virenscanner hatte ic hauch schon mal aus -> trat trotzdem auf ..

Es liegt nicht (nur) am Visual Studio, da es mir auch bei anderen Programmen passiert .

Ich denke, es ist irgendein Tool/Cache o.ä. was die Disk Zugriffe puffert oder optimieren will ...

W
955 Beiträge seit 2010
vor 10 Jahren

Dann können wir hier alle nur rumraten. Vllt mal mit Werkzeugen analysieren? Process Monitor von Sysinternals?

P
660 Beiträge seit 2008
vor 10 Jahren

Hallo zusammen,

guckt doch einfach welcher Prozess blockiert: Unlocker

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

T
415 Beiträge seit 2007
vor 9 Jahren

Ich hatte das Problem unter Win 7 und VS 2010 eben gerade auch. Die Installation des Service Pack 1 für VS hat das Problem beseitigt.