50 Stimmen

Warum würde der Debugger nicht an einem Haltepunkt in meiner ASP.NET-Anwendung anhalten?

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 einer roten runden Umrandung mit einem Ausrufezeichen 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 Haltepunktort wurde nicht geladen". Also, wie kann ich den Haltepunktort laden lassen? Es hat vor ein paar Wochen funktioniert. Was könnte dazu führen, dass ein Haltepunkt "nicht geladen" wird?

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

Zusatz:

Ich kann immer noch nicht durch Drücken von F5 das Debugging zum Laufen bringen, aber ich kann die Website starten, dann debuggen/an Prozess anhängen, um in den Debugging-Modus zu gelangen. Falls jemand weiß, warum das funktioniert, aber wenn ich F5 drücke es nicht funktioniert (die Debugging-Schaltflächen erscheinen nicht einmal bei F5), 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. Es ist so eingestellt, dass es auf dem lokalen IIS läuft und über die hosts-Datei die Domains auf 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 andere Domain, unter der die App verfügbar ist.)

55voto

Vilx- Punkte 100739

Versuchen Sie, eine vollständige Neukompilierung der Anwendung durchzuführen. Achten Sie darauf, dass es sich um die "Debug"-Konfiguration handelt.

Soweit ich verstehe (aber ich bin kein Experte in diesen Dingen), kann dies passieren, wenn die Debug-Info-Dateien (.PDB) nicht mit dem tatsächlich kompilierten Objekt synchron sind.

0 Stimmen

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

3 Stimmen

Löschen ist nicht der Weg. Du musst sie neu erstellen. Hast du versucht, in Visual Studio "Lösung neu erstellen"?

3 Stimmen

Tor von mir, ich hatte die Build-Option zum Veröffentlichen, nicht zum Debuggen!

17voto

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

Visual Studio ist manchmal verwirrt und bestimmt 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 "Managen (v2.0, v1.1, v1.0)" auswählen.

Grüße

0 Stimmen

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

0 Stimmen

@Augusto Mazzoni Pierzynski Nur Code in CS-Dateien wird ausgeführt und nicht Java-Script-Code. Im Fenster "Code-Typ auswählen" habe ich versucht, sowohl "Managed (4.0)" als auch "Script" anzuhaken, jedoch erlaubt Visual Studio das nicht. Es heißt: "Das Skript-Debugging ist nicht kompatibel mit Managed (v4.0). Möchten Sie "Managed (v4.0)" abwählen?" Irgendwelche Ideen, wie man das lösen kann?

0 Stimmen

Vielen Dank! Das war ein Problem für mich. Ich vermute, aufgrund der falschen Konfiguration der Projekte konnte der Debugger nicht korrekt den richtigen Code-Typ bestimmen, 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 im ASP.NET offiziellen Forum häufig aufgetreten ist, nämlich dass der VS-Debugger mit IE8 abstürzt.

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

Wie kann es passieren, dass der VS-Debugger mit IE8 abstürzt?

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 anhält und Ihre Breakpoints ignoriert!

Warum passiert das?

IE 8 hat eine Funktion namens Loosely-Coupled Internet Explorer (LCIE), die dazu führt, dass IE in mehreren Prozessen läuft. http://www.microsoft.com/windows/internet-explorer/beta/readiness/developers-existing.aspx#lcie

Ältere Versionen des Visual Studio Debuggers sind davon verwirrt und können nicht herausfinden, wie sie sich mit dem richtigen Prozess verbinden sollen.

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

1) RegEdit öffnen 2) Navigieren Sie zu HKEY_LOCAL_MACHINE -> SOFTWARE -> Microsoft -> Internet Explorer -> Main 3) Fügen Sie unter diesem Schlüssel ein DWord mit dem Namen TabProcGrowth hinzu 4) Setzen Sie TabProcGrowth auf 0

Wenn Sie dasselbe Problem unter Vista oder neuer haben, müssen Sie auch den geschützten Modus ausschalten.

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

5voto

Jonathan Parker Punkte 6551

Sie könnten auch Folgendes 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-Dateien. Wenn Sie Probleme beim Löschen einiger dieser Dateien haben, haben Sie möglicherweise noch eine Version von Visual Studio oder dessen Debugger im Hintergrund.
  4. Führen Sie iisreset / start aus
  5. Öffnen Sie die Lösung in VS
  6. Stellen Sie den Build auf Debug ein
  7. Führen Sie Rebuild all auf der Lösungsebene aus
  8. Drücken Sie F5

1 Stimmen

Ich habe alles auf dieser Liste gemacht (obwohl ich lokal nicht IIS, sondern den localhost/port Webserver, laufen lasse), aber ich habe immer noch das Problem. Ich habe alle .pdb Dateien gelöscht, ohne Veränderung. Die Build-Konfiguration für alle Projekte ist "debug".

0 Stimmen

Vielleicht probiere es dann unter IIS aus.

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 bekannte 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 alle meine Debugging-Probleme verschwanden, als ich vor dem Start eines Debugging-Laufs in meinem ASP.NET-Projekt alle laufenden Instanzen von IE8 schloss.

Ein weiterer Grund, warum ich hier poste, ist, einen Blog zu teilen, den ich gefunden habe, der eine Vielzahl von potenziellen Lösungen für das Problem 'Breakpoints funktionieren nicht' auflistet. Es ist nett, weil der Blog die meisten Lösungen an einem Ort auflistet, die ich im Internet gefunden habe. Wie auch immer, der Autor des Blogs ist George P. Alexander; ich werde die interessanten Teile hier kopieren und einfügen, falls etwas mit dem Artikel passiert:

  1. Präzisionsgeführte Raketen verwenden: Löschen Sie die .pdb-Dateien in Ihren Objekt- und Bin-Ordnern. Neu kompilieren. Ausführen.

  2. Alle .dlls mit einem Flächenbombardement zerstören: Löschen und neu laden Sie alle referenzierten .dlls (wie Ihre Klassenprojekte)

  3. Einen Massenvernichtungswaffen einsetzen: Wenn #1 & #2 nicht funktionierten, löschen Sie den Inhalt der betreffenden Objekt- und Bin-Ordner, so dass alle .pdb- und .dll-Dateien vernichtet sind. Laden Sie die benötigten .dlls neu und versuchen Sie es erneut.

  4. VS.Net-Magie: VS.Net schließen und neu starten. Neu erstellen. Ausführen. Ja, manchmal funktioniert es.

  5. Windows-Magie: Schalten Sie Ihren Computer aus und neu starten. Neu erstellen. Ausführen.

  6. Ausführungsmodus: Stellen Sie sicher, dass der Ausführungsmodus von VS.Net auf "Debuggen" und nicht auf "Veröffentlichen" eingestellt ist

  7. Web.config-Einstellungen: Stellen Sie sicher, dass das XML-Element "compilation"tag in Ihrer web.config-Datei ein Attribut mit debug = "true" hat. Nur wenn dies aktiviert ist, werden für Webanwendungen und -dienste ihre .pdb-Dateien zusammen mit den .dlls generiert

  8. Projekteigenschaften #1: Stellen Sie sicher, dass Projekteigenschaften --> Debuggen --> Aktivieren Sie "ASP.Net-Debugging ist aktiviert" oder "Aktivieren Sie den Visual Studio-Hosting-Prozess" (je nach der Version von VS.Net, die Sie verwenden).

  9. Projekteigenschaften #2: Stellen Sie sicher, dass Projekteigenschaften --> Konfigurationseigenschaften --> Erstellen --> "Debuginformation generieren" auf "True" eingestellt ist.

  10. Falscher Prozess angehängt: Ihre Debugging-Sitzung ist möglicherweise nicht an den richtigen Prozess angehängt. Sie müssen möglicherweise manuell den Prozess anhängen. Dies ist bei Webdiensten möglich. Die Option zum Anhängen eines Prozesses befindet sich im Debug-Menü.

  11. Skript- und nicht verwalteten Code debuggen: Können Sie Skripte oder nicht verwalteten Code nicht debuggen? Stellen Sie sicher, dass in den Projekteigenschaften --> Debuggen --> "ASP-Debugging aktivieren" oder "Nicht verwaltete Fehlersuche aktivieren" (abhängig von Ihrer Version von VS.Net) auf "True" festgelegt ist.

  12. @Page-Direktive #1: Stellen Sie sicher, dass das Attribut AutoEventWireup in Ihrer .aspx-Dokuments @Page-Direktive auf "True" gesetzt ist.

  13. @Page-Direktive #2: Stellen Sie sicher, dass das Attribut Debug in Ihrem .aspx Dokuments @Page-Direktive auf "True" gesetzt ist. Wenn Sie das Attribut nicht finden, ist das in Ordnung. Standardmäßig ist es true.

  14. Feindliche .DLLs: Stellen Sie sicher, dass Sie keine andere Instanz der .dll am Laufen haben, die sich an einem anderen Ort als Ihrem beabsichtigten Projekt befindet.

14.1 Feindliche .dlls Schläferzelle #1: Haben Sie Ihre Projekt .dll im GAC-Ordner installiert? Möglicherweise wird die .dll ausgeführt, die in Ihrem GAC-Ordner gehostet wird, anstatt derjenigen in Ihrem Bin-Ordner. Entfernen/Deinstallieren Sie die .dll aus dem GAC und versuchen Sie es erneut.

14.2 Feindliche .DLLs Schläferzelle #2:

C: \ Dokumente und Einstellungen[Benutzername]\VSWebCache[Computernamen]:

Setzen Sie eine Massenvernichtungswaffe (#3) auf die Ordner, die mit Ihrem Projekt zusammenhängen.

14.3 Feindliche .DLLs Schläferzelle #3: .dlls Ihres Projekts, die an einem anderen Ort liegen aber in Ihrem Projekt referenziert werden. Diese können durch Überprüfen der Projekteigenschaften gefunden werden. Kurz gesagt, VS.Net verweist auf eine andere .dll und nicht auf die in Ihrer Entwicklungs Umgebung geladene.

14.4 Feindliche .DLLs Schläferzelle #4: Hoffentlich müssen Sie sich nicht mit diesem Ordner beschäftigen, wenn Sie mit den obigen Punkten fertig sind...

Introducing C: \ WINDOWS \ Microsoft.NET \ Framework [.Net Version]\Temporary ASP.NET-Dateien\

Dieser Ordner könnte ältere Versionen von .dlls enthalten, die in Ihrem Windows-Ordner gespeichert sind und beim Ausführen von VS.Net referenziert werden können. Wenn dies passiert, ist das ärgerlich. Löschen Sie alle Ordner und Inhalte im Zusammenhang mit IHREM PROJEKT. Es könnten schreibgeschützte Sperren vorliegen, die Sie durch das Schließen von Prozessen deaktivieren müssen. Dies ist eher ein letzter Ausweg. Tun Sie dies nicht, wenn Sie noch nie mit Ihrem Windows-Ordner herumgespielt haben. In den meisten Fällen wird damit etwas getan, was vor diesem Punkt üblicherweise das Problem behebt. Idealerweise sollten Sie diesen Punkt nicht erreichen müssen, wenn Sie mit den oben genannten Punkten fertig sind. Und nur zur Aufzeichnung: Ich empfehle niemandem, diese Option zu erkunden oder an Ihrem Windows-Ordner herumzuspielen, wenn Sie keinen Doktortitel in Physik, Mathematik, Windows und .Net haben.

Weitere Tipps:

  1. Modulfenster: Das Modulfenster kann während der Ausführung Ihrer Anwendung von VS.Net aus angezeigt werden (Debug --> Fenster --> Module). Alle Module Ihres Projekts sollten dort aufgelistet sein. Wenn die .dll Ihres Projekts aufgeführt ist und der Status der Symbole "Symbole geladen" ist, haben Sie kein Problem.

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

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