50 Stimmen

Warum bleibt der Debugger in meiner ASP.NET-Anwendung nicht an einem Breakpoint stehen?

Ich versuche, eine große ASP.NET-Anwendung zu debuggen.

Ich habe einen Haltepunkt in der ersten Zeile von Page_Load in Default.aspx.cs gesetzt.

Wenn ich die Anwendung starte, wird mein Haltepunkt kurzzeitig zu einem roten runden Umriss mit einem Ausrufungszeichen darin, wird dann wieder zu einem normalen Haltepunkt und die Anwendung startet, ohne jemals an meinem Haltepunkt anzuhalten.

MSDN sagt mir, dass dieses Symbol bedeutet "der Haltepunktspeicherort wurde nicht geladen". Also wie kann ich den Haltepunktspeicherort laden lassen? Es hat vor ein paar Wochen funktioniert. Welche Arten von Dingen könnten dazu führen, dass ein Haltepunkt "nicht geladen wird"?

Was kann ich tun, damit der Debugger wieder an meinen Haltepunkten anhält?

Anhang:

Ich kann immer noch nicht durch Drücken von F5 das Debuggen zum Laufen bringen, aber ich kann die Website starten und dann debug/attach-process ausführen, um in den Debugging-Modus zu gelangen. Wenn jemand weiß, warum dies funktionieren würde, während es beim Drücken von F5 nicht funktionieren würde (die Debugging-Buttons werden bei F5 nicht einmal angezeigt), sind alle Ideen willkommen.

0 Stimmen

In meinem Fall läuft dieselbe ASP.NET-App auf mehreren Domains und verwendet die Domain aus der Anfrage, um den Inhalt zu wählen, der bereitgestellt werden soll. Sie ist so eingestellt, dass sie auf dem lokalen IIS läuft und über die hosts-Datei die Domains zu 127.0.0.1 aufgelöst werden. Die App lief einwandfrei, aber der Debugger hielt nicht an den Haltepunkten an, bis ich die Projekteigenschaften > Web > Server > Projekt-URL auf die Domain gesetzt habe, die für die Anfrage verwendet wird. (Es enthielt eine weitere Domain, unter der die App verfügbar ist.)

55voto

Vilx- Punkte 100739

Versuchen Sie, eine vollständige Neuübersetzung der Anwendung durchzuführen. Achten Sie darauf, dass sie in der "Debug"-Konfiguration ist.

Soweit ich verstehe (aber ich bin kein Experte in diesen Dingen), kann dies passieren, wenn die Debug-Informationen (.PDB-Dateien) nicht mit dem tatsächlich kompilierten Programm übereinstimmen.

0 Stimmen

Ich habe alle .pdb-Dateien im ../debug/bin gelöscht, aber das hat nicht geholfen.

3 Stimmen

Löschen ist nicht das Richtige. Sie müssen sie neu erstellen. Haben Sie versucht, "Lösung neu erstellen" in Visual Studio?

3 Stimmen

Fool of me, I had the build option to release, not debug!

17voto

Leute.... Ich habe eine andere Lösung gefunden, damit der Breakpoint nicht stoppt. Im Fenster "An Prozess anhängen" in Visual Studio 2010 und unter Verwendung von Framework 3.5 bestimmt es standardmäßig automatisch die zu debuggenden Code-Typen (v2.0, v1.1, v1.0) und (v4.0).

Visual Studio verwechselt manchmal 2.0 verwalteten Code fälschlicherweise als 4.0 verwalteten Code.

In diesem Fall müssen Sie auf die Schaltfläche "Auswählen..." im Feld "Anhängen an" klicken und "Verwalten (v2.0, v1.1, v1.0)" auswählen.

Mit freundlichen Grüßen

0 Stimmen

Nun, was weißt du. Das hat tatsächlich für mich funktioniert. =) Danke Mann! (+1)

0 Stimmen

@ Augusto Mazzoni Pierzynski Es werden nur Code in CS-Dateien ausgeführt und nicht der Javascript-Code. Im Fenster "Code Type Select" habe ich versucht, sowohl "Managed(4.0)" als auch "Script" zu überprüfen, jedoch erlaubt Visual Studio dies nicht. Es sagt "Skript-Debugging ist nicht kompatibel mit Managed(v4.0). Möchten Sie "Managed(v4.0)" deaktivieren? "Irgendwelche Ideen, wie man das lösen kann?

0 Stimmen

Vielen Dank! Dies war ein Problem für mich. Ich vermute, dass aufgrund von Konfigurationsfehlern in den Projekten der Debugger nicht richtig den korrekten Code-Typ bestimmen konnte, bis ich manuell die .NET-Version UND den zusätzlichen "Managed Compatibility Mode" ausgewählt habe.

6voto

madhusudhan.K Punkte 61

VS Debug Problem mit IE8

Da dies mein erster Beitrag auf Weblogs ist, habe ich mich entschieden über ein Problem zu schreiben, das häufig im offiziellen ASP.NET-Forum geöffnet wurde, nämlich das der VS-Debugger mit IE8 abstürzt.

Ich hatte das gleiche Problem 4 Mal beantwortet, also hoffe ich, dass jemand diesen Beitrag sehr hilfreich findet, wenn er auf das gleiche Problem stößt.

Wie könnte der VS-Debugger mit IE8 abstürzen?

Wenn Sie mehrere Instanzen von IE8 geöffnet haben und versuchen, Ihr Projekt zu debuggen, haben Sie wahrscheinlich das Problem, dass der VS-Debugger einfach stoppt und Ihre Breakpoints ignoriert!

Warum war das so?

IE 8 verfügt über eine Funktion namens Loose-Coupled Internet Explorer (LCIE), die dazu führt, dass IE in mehreren Prozessen ausgeführt wird. http://www.microsoft.com/windows/internet-explorer/beta/readiness/developers-existing.aspx#lcie

Ältere Versionen des Visual Studio Debuggers werden dadurch verwirrt und können nicht herausfinden, wie sie sich an den richtigen Prozess anschließen sollen.

Um dieses Problem zu überwinden, müssen Sie die Funktion des Prozesswachstums von LCIE deaktivieren, indem Sie die folgenden Schritte befolgen:

1) RegEdit öffnen 2) Navigieren Sie zu HKEY_LOCALMACHINE -> SOFTWARE -> Microsoft -> Internet Explorer -> Main 3) Fügen Sie unter diesem Schlüssel ein DWORD namens TabProcGrowth hinzu. 4) Setzen Sie TabProcGrowth auf 0

Wenn Sie auf dem gleichen Problem auf Vista oder neuer stoßen, müssen Sie auch den geschützten Modus ausschalten.

Und dann können Sie mit dem Debuggen Ihres Codes fortfahren :)

5voto

Jonathan Parker Punkte 6551

Sie könnten auch das Folgende versuchen:

  1. Schließen Sie die Lösung und Visual Studio.
  2. Führen Sie iisreset /stop aus.
  3. Löschen Sie alles unter C:\windows\microsoft.net\framework\v2.0.50727\Temporary ASP.NET Files. Wenn Sie Probleme beim Löschen einiger dieser Dateien haben, könnte eine Version von Visual Studio oder seines Debuggers immer noch ausgeführt werden.
  4. Führen Sie iisreset /start aus.
  5. Öffnen Sie die Lösung in VS.
  6. Setzen Sie den Build auf Debug.
  7. Führen Sie einen Neuaufbau auf Lösungsebene durch.
  8. Drücken Sie F5.

1 Stimmen

Ich habe alles auf dieser Liste gemacht (auch wenn ich nicht lokal IIS betreibe, sondern stattdessen den localhost/port Webserver), aber ich habe immer noch das Problem. Ich habe alle .pdb-Dateien gelöscht, keine Änderung. Die Build-Konfiguration für alle Projekte ist "debug".

0 Stimmen

Vielleicht versuchen Sie es dann unter IIS auszuführen.

1 Stimmen

Das hat für mich funktioniert, obwohl der Ordner v4.0 anstelle von V2.0 war.

4voto

Jay Riggs Punkte 52013

Wenn Sie Visual Studio 2005 und IE8 verwenden, könnte ich eine Erklärung haben: IE8 hat eine neue Funktion namens Loosely-Coupled IE (LCIE) eingeführt, die bekanntermaßen Probleme beim Debuggen von VS2005 ASP.NET-Anwendungen verursacht. Sehen Sie sich diesen Thread auf SO für weitere Details und einige Lösungen an.

Es stellte sich heraus, dass all meine Debugging-Probleme verschwanden, als ich alle laufenden Instanzen von IE8 schloss, bevor ich einen Debugging-Lauf in meinem ASP.NET-Projekt startete.

Ein weiterer Grund, warum ich hier poste, ist, um einen Blog zu teilen, den ich gefunden habe, der eine große Anzahl potenzieller Lösungen für das Problem 'Breakpoints funktionieren nicht' auflistet. Es ist nett, weil der Blog die meisten der Lösungen auflistet, die ich im Internet verstreut gefunden habe. Wie auch immer, der Autor des Blogs ist George P. Alexander; ich werde die interessanten Teile hier kopieren und einfügen, falls mit dem Artikel etwas passieren sollte:

  1. Verwendung von präzisionsgelenkten Raketen: Löschen Sie die .pdb-Dateien in Ihren Objekt- und Bin-Ordnern. Neu kompilieren. Ausführen.

  2. Teppichbombe alle .dlls: Löschen und erneut laden Sie alle referenzierten .dlls (wie Ihre Klassenprojekte)

  3. Eine WMD abfeuern: Wenn #1 & #2 nicht funktionierten, löschen Sie die Inhalte der Objekt- und Bin-Ordner selbst, sodass alle .pdbs und .dlls vernichtet sind. Laden Sie die erforderlichen .dlls neu und versuchen es erneut.

  4. VS.Net-Magie: Schließen Sie VS.Net und starten Sie es neu. Wieder aufbauen. Ausführen. Ja, manchmal funktioniert es.

  5. Windows-Magie: Schalten Sie Ihren Computer aus und starten Sie ihn neu. Wieder aufbauen. Ausführen.

  6. Ausführungsmodus: Stellen Sie sicher, dass der Ausführungsmodus von VS.Net auf "Debug" und nicht auf "Release" eingestellt ist

...

Weitere Tipps:

  1. Modul-Fenster: Das Modul-Fenster kann während der Ausführung Ihrer Anwendung in VS.Net (Debuggen --> Fenster --> Module) angezeigt werden. Dort sollten alle Module Ihres Projekts aufgeführt sein. Wenn das .dll Ihres Projekts aufgeführt ist und der Status der Symbole "Symbole geladen" ist, haben Sie kein Problem.

Wenn es sich um eine Nachricht in Bezug auf Ihre .pdb-Datei handelt, gehen Sie zu "Symbole auswählen" und wählen Sie die entsprechende .pdb-Datei. Möglicherweise müssen Sie das Debuggen neu starten oder VS.Net neu laden. Der Status sollte sich jetzt ändern zu "Symbole geladen".
2. VS.Net-Optionen: Tool --> Optionen --> Debuggen In VS.Net 2005 gibt es einen weiteren Knoten namens "Symbole", wo Sie VS.Net bitten können, nach Symbolen zu suchen. Dies kann auch über das Modulfenster im Debug-Modus erfolgen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X