Hi, wir (unser Entwicklerteam) haben fast alle das gleiche Problem mit VS2010 (sp1): Der Debugger hält an einem zuvor gesetzen Breakpoint an (c# Quellcode, winforms), nun schaut man mittels QuickWatch etc. die Variablen an oder wartet auch nur ein kurze Zeit und möchte dann mittels "step over" einen Befehl weiter gehen. Dann wird in fast 50% der Fälle kein "step over" ausgeführt, sondern der Befehl "run", sodass man aus dem aktuellen Debug-Kontext rausfliegt. Dieses Problem macht ein ordentliches Debuggen an manchen Stellen fast unmöglich.
Hat jemand dasselbe Problem und vielleicht auch schon eine Lösung oder Workaround?
Ist das eine multihtreaded Anwendung, in der zum Zeitpunkt des Debuggens mindestens 2 Threads laufen? In diesem Zusammenhang treten bei uns auch vermehrt solche Effekte auf. Nur eine Vermutung, aber vielleicht hilfts weiter.
EDIT: Versuch mal folgendes: Im VisualStudio (hab hier grad ne deutsche Version) unter Debuggen->Fenster->Threads aufrufen. Damit hast Du ein neues Panel "Threads", das alle laufenden Threads auflistet. Dort kann man auch alle CallStacks ansehen, etc... Man kann dort aber auch einige Threads selektieren und sie fixieren (das ist so ein kleines Symbol mit nem Pause-Zeichen || ). Damit kannst Du z.B. nur den Thread aktiviert lassen, den Du gerade debuggen willst, alle anderen fixieren. Wait/Join Situation musst Du halt dann über selektive Freigabe einzelner Threads manuell steuern. Vielleicht habt Ihr damit Erfolg.
EDIT 2: Hab eben eine VS Extension (kann man über den VS ExtensionManager installieren) entdeckt, die einem die Arbeit mit dem Thread-Toolwindow wohl abnimmt. Habs nicht getestet, klingt aber zumindest nach ein bisschen Arbeitsersparnis. Viel Erfolg, Florian
das muss ich mal versuchen. Wobei das nur teilweise möglich ist: Ein paar Threads muss ich laufen lassen, da sie periodisch was abarbeiten müssen, sonst werden z.b. Clients abgemeldet.
Also eine Lösung gibt es schon. Du könntest einfach in der nächsten Zeile einen Breakpoint setzen und dann bleibt er dir dort schon stehen. Aber das ist auch nur für den Notfall geeignet denn damit wird man ziemlich schnell verrückt da es so umständlich ist.
ja wir haben fast zu jedem Zeitpunkt mehrere Threads laufen. Das war auch schon unsere Vermutung. Leider können und wollen wir das aber natürlich nicht ändern, nur damit VS das Debugging richtig hin bekommt :-)
Wir haben auch schon seit über einem Jahr bei Microsoft ein Bug Ticket geöffnet, das scheinbar mit dem Sp1 gelöst sein soll. Aber das kann ich nicht glauben. Mich wundert es nur, dass sich nicht viel mehr Benutzer über dieses gravierende Problem stören.
Bitte benutze für solche Anmerkungen die Kommentarfunktion. Es ist dann viel leichter, den Zusammenhang herzustellen zwischen Deinem Text und dem, auf den er sich bezieht. Wenn Antworten bewertet werden, ändert sich auch noch die Sortierung der Beiträge, dann wird es noch unübersichtlicher. Antworten sollen hier nur Antworten auf die ursprüngliche Frage sein, nicht Antworten auf andere Antworten.
@Michael - das mit dem Breakpoint habe ich auch schon gelesen und probiert. Leider funktioniert das auch nur bedingt und ist - wie du sagst - fast unmöglich in längeren Funktionen.