Visual Studio breakpoints break in die falsche Quell-Datei (oder mehrere Dateien gleichzeitig) wenn mehrere Dateien den selben Namen haben

In einem team-Projekt an dem ich arbeite, setzen einen breakpoint in einer Datei (sagen IdeasController.cs) führen zu erratischen debugger Verhalten, wenn Sie eine andere Datei mit dem gleichen Namen in der Lösung. Ich habe reproduzierte das problem auf mehreren Entwickler-workstations.

Beispiel

Ich einen Haltepunkt in IdeasController.cs in unserem Web-API:

Visual Studio breakpoints break in die falsche Quell-Datei (oder mehrere Dateien gleichzeitig) wenn mehrere Dateien den selben Namen haben

Einer anderen Datei aufgerufen IdeasController.cs gibt es in unserem separaten MVC 4 web-Projekt. In der Abbildung unten, der debugger zeigt die Api->IdeasController source-code, aber die Zeile markieren, mit der code-Struktur von Web->IdeasController. Der Haltepunkt wird dupliziert, mit einem von Ihnen in der Mitte von einem Kommentar-block.

Visual Studio breakpoints break in die falsche Quell-Datei (oder mehrere Dateien gleichzeitig) wenn mehrere Dateien den selben Namen haben

Breakpoint-Fenster zeigt den Haltepunkt in beiden Dateien gleichzeitig:

Visual Studio breakpoints break in die falsche Quell-Datei (oder mehrere Dateien gleichzeitig) wenn mehrere Dateien den selben Namen haben

Auf einigen workstations der debugger durch die richtigen Zeilen (unabhängig von der line, highlight); auf andere, die es fröhlich Schritte durch irrelevante Zeilen (inklusive Kommentare und Leerzeichen). Ich vermute, dies hängt davon ab, welche Quellcode-Datei, die es wählt, um anzuzeigen.

, Was ich versucht habe

Habe ich surften im Internet. Diese Art von problem scheint aufzutreten, wenn es eine Diskrepanz zwischen der debug-Datei (*.pdb), die Quell-Datei und das kompilierte code. Es gibt viele mögliche Ursachen: doppelte Datei-Namen (das kann verwirren den debugger " [5]), veraltete Projekt-build-Dateien, ungültige Lösung cache, oder fehlerhafte build-Konfiguration.

Diese sind die Lösungen, die ich gefunden habe und ausprobiert:

  • Überprüft meine build-Konfiguration.
    1. Sorgte dafür, dass das Projekt nicht gebaut im release-Modus.
    2. Dass wir nicht über code-Optimierung aktiviert.
    3. Sorgte dafür, dass das Projekt die debug-Modul wurde ordnungsgemäß geladen. (Begonnen wurde das Projekt Debuggen und überprüft Debug > Windows > Modules. Beide Assemblys aufgeführt sind, nicht optimiert und haben ein status-symbol "Symbole laden".)
  • Zurücksetzen der debugging-Metadaten & Visual Studio cache.
    1. Geschlossen Visual Studio gelöscht und die Lösung der cache-Datei (*.suo).[1]
    2. Gelöscht jedes Projekt die build-Ausgabe (die bin und obj Ordner). (Zum nachlesen: öffnen Sie den Projektmappen-Ordner im Windows-Explorer, und geben Sie diesen in das Suchfeld ein: "type:folder AND (name:=bin OR name:=obj)".
    3. Gelöscht assembly cache-Ordner (C:\Documents and Settings\<user>\Local Settings\Application Data\dl3).[2][3]

Keiner von diesen hatte, keine Wirkung. Ich kann benennen Sie eine der Dateien (ohne umbenennen der Klasse), um vorübergehend das problem zu umgehen, aber das ist weit vom ideal entfernt.

, Wo ich jetzt bin

Seite 14 von meiner letzten Google-Suche. Anregungen wäre sehr geschätzt werden. 🙂

  • Ja, wirklich ärgerlich. Dieser bug ist mindestens seit Visual Studio 2008. Die einzige Lösung die ich kenne besteht darin, ein umbenennen der Quelldatei als Sie herausgefunden haben, auf Ihrem eigenen.
  • Interessanterweise, dieser Fehler ist in der Dokumentation erwähnt: msdn.microsoft.com/en-us/library/h6aesyw2%28v=vs.100%29.aspx . Aber die Problemumgehung, die Sie vorschlagen, (geben Sie den vollständigen Pfad der Quelldatei manuell) scheint nicht zu funktionieren, zumindest bei mir in VS 2013 U2.
  • Noch geschieht in Visual Studio 2015
InformationsquelleAutor Pathoschild | 2012-09-13
Schreibe einen Kommentar