Haltepunkt konnte nicht gebunden werden - Visual Studio 2015


158

Ich habe gerade ein Upgrade von Visual Studio 2013 auf 2015 durchgeführt und habe jetzt Probleme mit Haltepunkten.

Es ist ein Treffer oder ein Fehler, bei dem Haltepunkte tatsächlich funktionieren, und wenn ich beim Debuggen einen festlege, wird folgende Fehlermeldung angezeigt:

Der Haltepunkt konnte nicht gebunden werden.

Jede Hilfe wäre dankbar. Ich bin bereit, 2015 aufzugeben und zurückzukehren.

Antworten:


226

Ich hatte das gleiche Problem, aber eine andere Lösung. Bitte beachten Sie, dass ich auf VS 2015 Update 1 aktualisiert habe und das Problem weiterhin besteht.

In der vorherigen Ausgabe von VS löste das Starten des Debugs automatisch einen Build im Debug-Modus aus. Bei VS2015 ist dies jedoch nicht der Fall.

Wenn sich Ihr letzter Build im Release-Modus befand und Sie versuchen, Fehler zu beheben, funktioniert der Haltepunkt nicht.

Sie müssen zuerst manuell im Debug-Modus erstellen und dann mit dem Debuggen beginnen.


3
Ist das nicht ein seltsames Verhalten? Kann es als Fehler angesehen werden?
Tolga Evcimen

Durch die Installation des Updates für Microsoft Visual Studio 2015 Update 3 (KB3165756) wurde das Debugging-Problem für mich behoben, bei dem zuvor "Der Haltepunkt konnte nicht gebunden werden" angezeigt wurde. Fehler in der C # Views
hem

2
Das war eigentlich gut :) Ich habe vergessen, dass der Release-Build aktiv war und hatte eine sehr seltsame Debugging-Sitzung, bis ich dies las. Ich erinnere mich, dass ich das Debugging wieder aktiviert habe und alles "normal" ist.
Wiederholen Sie Spacer

1
Ich hatte eine seltsame Erfahrung. Ich musste den Build auf "Release" setzen, bauen, dann "debuggen" und erneut bauen.
Samneric

@ TolgaEvcimen Angesichts der Tatsache, dass das Verhalten nach mehr als 2 Jahren ab VS 15.5.6 immer noch dasselbe ist, würde ich sagen, dass MS dies nicht als Fehler betrachtet. Persönlich würde ich es logischer finden, zum alten Verhalten zurückzukehren, einen Debug-Build automatisch auszulösen. Oder zumindest eine Warnung geben.
Max Favilli

82

Ich hatte das gleiche Problem.

Ich habe das Problem gelöst, indem die Option "Code optimieren" auf der Registerkarte "Projekteigenschaften" deaktiviert wurde.


Das Problem trat immer noch bei einem meiner Projekte auf. Wie auch immer, Update 1 ist jetzt so hoffentlich verfügbar,
Sealer_05

2
Ist das nicht der springende Punkt eines Debug-Builds? Ich würde von einem Release-Build mit deaktiviertem "Code optimieren" abraten.
Bart Friederichs

Als ich mir den Konfigurationsmanager ansah, wechselte ich für die Lösung zu Debug und stellte fest, dass einige Projekte fälschlicherweise auf Release eingestellt waren. Dies bedeutet, dass die Auswahl von Debug in der Dropdown-Liste dazu führen würde, dass diese Projekte ihre Release-Konfiguration verwenden, was bedeutet, dass sie optimiert sind.
AaronLS

39

Dies mag trivial erscheinen, aber nach vielen Headscratchings mit den gleichen Problemen, die Sie erwähnt haben, stellte ich fest, dass mein Build auf "Release" anstatt auf "Debug" eingestellt war, als ich versuchte zu debuggen. Die Lösung für "Debug" neu zu erstellen "behoben, und ich konnte Haltepunkte wie gewohnt setzen


2
Das erlaubte mir, die Haltepunkte zu setzen, hält aber nicht ewig an. Ich habe auch immer noch Probleme mit dem Debuggen, indem ich immer noch zufällige Codezeilen überspringe
Sealer_05

Dieses Problem besteht trotz aller einmaligen vorübergehenden Erfolgsberichte für völlig unterschiedliche Lösungen fort. Dieses spezielle "Update" muss jedoch neben "Ist Ihr Computer angeschlossen" gestellt werden. Es ist wirklich keine Lösung. Ja, Sie brauchen Strom und ja, Sie können keine Haltepunkte in einem Release-Build setzen - meine Güte.
Rick O'Shea

@Kenneth Møller Wie Sie bereits erwähnt haben, mag es trivial sein, aber auch mein Problem gelöst haben.
Ben Junior

36

Ich hatte ein ähnliches Problem mit nicht bindenden Haltepunkten sowie bestimmten lokalen Variablen, die im Fenster "Lokale" nicht ausgewertet wurden. Was schließlich behoben wurde, war die Aktivierung der Option "JIT-Optimierung beim Laden des Moduls unterdrücken (nur verwaltet)" auf der Registerkarte Optionen-> Debug-> Allgemein. Sobald ich festgelegt habe, dass es ohne Probleme binden konnte.


Ich habe es ausprobiert, aber in meinen API-Controllern immer noch keine Haltepunkte erreicht.
Sealer_05

Es gibt eine gute Erklärung zum Debuggen mit optimiertem Code hier
Nathan

Ähm, nein, das ist keine Lösung. Was wir bekommen, sind Leute, die nach dem Zufallsprinzip
Rick O'Shea

Schließlich. Dadurch konnte ich auch den Code durchgehen, über den zuvor gesprungen wurde.
Jeff Davis

Dies hat es für mich in VS 2019 gelöst, vielen Dank!
EM0

14

Ich hatte dieses Problem. Ich habe eine Sitzung zur Leistungsprofilerstellung ausgeführt, bei der die Web.configDatei mit den Einstellungen für den Leistungsmonitor geändert wurde :

<appSettings>
   <add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Team Tools\Performance Tools\vsinstr.exe"/>
</appSettings>


<compilation debug="true" targetFramework="4.5" 
      assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
   ...
</compilation>


<runtime>
   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
         <assemblyIdentity name="Microsoft.VisualStudio.Enterprise.AspNetHelper" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
         <codeBase version="16.0.0.0" href="file:///D:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/Shared/Common/VSPerfCollectionTools/vs2019/Microsoft.VisualStudio.Enterprise.AspNetHelper.DLL"/>
      </dependentAssembly>
      <dependentAssembly>
         <assemblyIdentity name="VsWebSite.Interop" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
         <codeBase version="8.0.0.0" href="file:///D:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/Shared/Common/VSPerfCollectionTools/vs2019/VsWebSite.Interop.DLL"/>
      </dependentAssembly>
   </assemblyBinding>
</runtime>

Dies brach meine Fähigkeit, an Haltepunkten anzuhalten. Als ich zur ursprünglichen Web.config zurückkehrte (die Performance Profiler-Einstellungen wurden entfernt), funktionierten die Haltepunkte wieder.


1
Dies war die Lösung für mich nach der Profilerstellung in VS 2017. Vielen Dank.
Lee Taylor

1
Es scheint, dass es viele Ursachen dafür gibt, dass Haltepunkte nicht gebunden werden können, aber dies ist die, die wir gesehen haben.
BJury

2
Das war es für mich. Ich habe diese AppSetting entfernt:<add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Team Tools\Performance Tools\vsinstr.exe"/>
Chad Hedgcock

5

Ich hatte gestern das gleiche Problem. Ich habe die Funktion "Lösung reinigen" verwendet und sie hat geholfen.


3
Es ist fast wie Comedy Central. Ich warte auf "Ich habe ein Gummihuhn über die Maschine geschwenkt und das hat funktioniert". Wir haben ein halbes Dutzend Entwickler, die dieses Problem erlebt haben, und keine dieser magischen, erklärungsfreien Ad-hoc-Lösungen funktioniert.
Rick O'Shea

5

Die Lösung besteht darin, die Entwurfsoptimierung zu deaktivieren.

Project Properties> Build> Advanced Compile Options> Enable Optimizations


4

Ich führe Leistung auf meiner Lösung aus und das fügte dies meiner web.config hinzu

<compilation debug="true" targetFramework="4.5" assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 

Das assemblyPostProcessorTypeist das Problem, ich habe es gelöscht und das hat mein Problem gelöst



1

Ich habe die Einstellung "Optimieren" nicht geändert, aber basierend auf anderen Antworten hier habe ich

  1. Stellen Sie den Projektmappen-Explorer so ein, dass alle Dateien für das Projekt angezeigt werden
  2. Löschte den versteckten Bin- und Debug-Ordner
  3. Führen Sie eine 'Bereinigung' für das Projekt durch
  4. 'Rebuild' für das Projekt durchgeführt

Bisher hat das für mich behoben. Das Update auf VS2015 Update 2 scheint ein paar Dinge auf meinem System gestört zu haben.


1

Ich weiß, dass dies ein alter Beitrag ist, aber falls alle anderen oben genannten Tricks für Sie nicht funktionieren, stellen Sie sicher, dass das Image, das Sie debuggen möchten, aktuell ist. Aus irgendeinem Grund wurden nach dem Veröffentlichen und Übertragen eines .NET Core-Projekts auf meinen Raspberry Pi 'unzip' auf dem RPi einige DLLs im Arbeitsverzeichnis nicht kopiert und überschrieben. Als ich den Debugger anhängte und dachte, alles sei in Ordnung, wurden einige Haltepunkte erreicht, andere nicht und einige andere gaben mir den Fehler "Kann nicht binden". Nachdem ich das Entpackungsproblem behoben hatte, kamen alle meine Haltepunkte und Symbole zurück. Ich hoffe das hilft.


0

Ich bin heute auf die Bindungsbruchpunktfehler gestoßen. Und ich habe mein Problem gelöst, indem ich unten war.

Wenn Ihre Debug-Konfigurationen nicht korrekt sind, können Sie das folgende Problem nicht beheben.

  1. Projekt reinigen
  2. Wenn sich der Ausgabepfad vom Ordner bin unterscheidet, ersetzen Sie ihn durch den Ordner bin (dies ist die wichtigste Regel).
  3. Wiederaufbauen

Vielleicht hilft diese Lösung jemandem.


0

VS-Haltepunkte können nicht an asynchrone Methoden gebunden werden.

Ich hatte einen App Dynamics-Agenten installiert, der dies verursachte. Entfernen Sie das und Sie können loslegen.


0

Ich hatte das gleiche Problem, hatte aber nicht bemerkt, dass "Debug" in der Debug-Symbolleiste (normalerweise direkt unter dem Menü) in "Release" geändert wurde. Also habe ich es auf "Debug" gesetzt, es hat funktioniert.



0

SCHRITT 1: Schließen Sie das Offensichtliche aus:

  • Kompilieren Sie im Debug-Modus.
  • Versuchen Sie, die Lösung zu reinigen, bevor Sie den Haltepunkt festlegen.
  • Gehen Sie zum Debug-Ordner und löschen Sie die PDF-Datei [Ihre Anwendung].
  • Führen Sie dann einen Build aus oder erstellen Sie Ihre Anwendung neu.
  • Gehen Sie zum Debug-Ordner und bestätigen Sie, dass Sie eine brandneue [Ihre Anwendung] .pdb-Datei haben.
  • Versuchen Sie dann, Ihren Haltepunkt festzulegen.

SCHRITT 2 Für C ++ - Projekte:

Überprüfen Sie die folgenden Projekteigenschaften:

  • C ++ / General / Debug Information Format: Programmdatenbank.
  • C ++ / Optimierung: Deaktiviert.
  • C ++ / Codegenerierung / Laufzeitbibliothek: Multithread-Debug.
  • Linker / Debugging / Debug-Informationen generieren: Ja.
  • Linker / Debugging / Programmdatenbank generieren: $ (TargetDir) $ (TargetName) .pdb.
  • Linker / Manifest-Datei / Manifest generieren: Nein.
  • Linker / Manifest-Datei / Isolation zulassen: Nein.
  • Linker / Embedded IDL / Ignorieren von Embedded IDL: Ja.
  • Führen Sie Schritt 1 erneut aus

    Sie können versuchen, __debugbreak () hinzuzufügen. Diese Anweisung muss sich in Ihrer Quelldatei befinden, in der Sie brechen möchten.

SCHRITT 2 Für C # -Projekte:

  • In den Projekteigenschaften sollte Build / General / Optimize-Code deaktiviert sein.
  • In den IDE-Einstellungen Debuggen / Optionen und Einstellungen / Debuggen / Allgemein JIT-Optimierung beim Laden des Moduls unterdrücken (nur verwaltet): Aktiviert
  • Führen Sie Schritt 1 erneut aus

Versuchen Sie, Ihre Lösung auf einem anderen Computer zu öffnen. Wenn Sie einen Haltepunkt auf einem anderen Computer binden können, kann dies bedeuten, dass ein Problem mit Ihrem VS oder Ihrem Betriebssystem vorliegt.

SCHRITT 3: Stellen Sie sicher, dass Ihr VS auf dem neuesten Stand ist:

Es gab Berichte über solche Probleme im VS2013 RTM sowie im VS2015 Update 1 und Update 2.

Gehen Sie in VS zu Tools / Erweiterungen und Updates / Updates / Produktupdates und sehen Sie, welche Version Sie ausführen. Wenn ein Update benötigt wird, wird es dort angezeigt.

SCHRITT 4: Stellen Sie sicher, dass Ihr Betriebssystem auf dem neuesten Stand ist:

Wenn Sie ein Win 10-Betriebssystem ausführen, wurde ein Fehler in Bezug auf dieses Problem gemeldet, der in Build 14251 aufgetreten ist. Dieser Fehler wurde in Build 14257 (und höher) behoben.


0

Ich bin gerade auf ein ähnliches Problem gestoßen, und keine der Antworten hier traf auf das Problem, mit dem ich konfrontiert war. Anders als in der Frage erhalte ich jedoch nie eine Nachricht, dass die Bindung fehlgeschlagen ist. Der Haltepunkt trifft einfach nie. Hoffentlich ist dies hilfreich für jemanden in der Zukunft, der mit WCF seinen Kopf gegen die Wand schlägt.

TL / DR:
In der SOAP-Nachricht gab es einen Datensatz mit fehlerhaften Daten, der dazu führte, dass der Haltepunkt nicht getroffen wurde.

Ganze Geschichte:

Ich habe einen WCF-Dienst basierend auf WSDL von einem anderen Team. Nicht meine Definition, keine Kontrolle darüber ... Ich erhalte über diesen Service Nachrichten von diesem anderen Team. In meinem Fall erhalte ich Nachrichten, kann die Nachricht in der Nachrichtenprotokolltabelle in der Datenbank protokollieren (was vor dem Aufruf meiner Dienstmethode geschieht), die Dienstmethode wird anscheinend aufgerufen (möglicherweise nicht) und der Server antwortet mit a 202 Akzeptiert. Die Kommunikation funktioniert, außer dass während des Methodenaufrufs keine Daten in der Datenbank gespeichert werden.

Da der Service eine erfolgreiche Antwort zurückgibt, habe ich http- und transportbezogene Probleme ausgeschlossen.

Also habe ich VS2015 gestartet, um den Dienst zu debuggen. Die fragliche Nachricht ist groß, aber innerhalb der Grenzen dessen, was ich erwarten würde. Ich habe einen Haltepunkt in die erste Zeile der Dienstmethode gesetzt und die große Nachricht durchgeschickt, aber der Haltepunkt wurde nie erreicht. Ich habe eine kleinere Nachricht ausprobiert, von der ich wusste, dass sie auf derselben Ausführungsinstanz funktioniert, und der Haltepunkt wurde einwandfrei erreicht. Also schien alles in der Konfiguration in Ordnung zu sein. Ich dachte, vielleicht liegt etwas in der Nachrichtengröße.

Ich habe alles versucht, was ich finden konnte - sicherstellen, dass ich mich in einer Debug-Konfiguration befand, bereinigen und neu erstellen, den Debugger manuell an den w3wp-Prozess (der VS bereits war) anhängen und verwenden Debugger.Break() anstelle eines Haltepunkts mehrere Startprojekte und mein Testprojekt entladen Damit war das Dienstprojekt das einzige, das .NET aktualisiert, VS2015 neu startet, neu startet, von lokalem IIS zu IIS Express und zurück wechselt und den Dienst mit der garantierten neuesten WSDL neu erstellt. Nichts war wichtig. Der Haltepunkt wurde nie erreicht.

Am Ende musste ich die Datensätze in der großen Nachricht einzeln aussortieren, bis ich einen einzelnen Datensatz mit schlechten Daten fand. In meinem Fall war es ein Datensatz, der keinen Wert für 2 DateTime-Felder hatte. Als ich eine Nachricht mit nur diesem Datensatz erstellt und gesendet habe, wurde der Haltepunkt nicht erreicht. Als ich Werte für diese 2 DateTime-Felder angegeben und dieselbe (feste) Nachricht im Haltepunkt gesendet habe, wurde sie wie erwartet ausgelöst.

Ich hatte jede einzelne CLR-Ausnahme aktiviert, nichts anderes als fehlende .pbd-Dateien, die mir egal waren. WCF schickte die Anfrage glücklich mit einer schlechten Aufzeichnung durch. Ich sage nicht, dass WCF es aufgrund der Verträge nicht hätte durchschicken sollen, nur dass die schlechte Aufzeichnung dazu geführt hat, dass der Haltepunkt nicht erreicht wurde.


0

Ich musste die Datei web.config ändern, um das Debuggen zu aktivieren. Ändere das:

<compilation debug="true" targetFramework="4.5.2" assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

zu:

<compilation debug="true"/>

0

Reinigen Sie die gesamte Lösung, bevor Sie eine der anderen Lösungen ausprobieren. Nachdem Sie fast alles versucht haben, was in früheren Antworten gesagt wurde, und Visual Studio mehrmals neu gestartet haben, hat es den Trick getan, nur die Lösung zu reinigen!


0

Ich habe alles versucht, was hier vorgeschlagen wurde. Schließlich setze ich die "Spezifische Seite" in Projekteigenschaften -> Web auf meine lokale Start-URL, Seite und Abfrageparameter. Habe im Debug-Modus bereinigt und neu erstellt und es hat meinen Haltepunkt erreicht.


0

Obwohl dies ein viel späterer Build ist (VS2017), hatte ich dieses Problem mit C # -Projekten. Versucht zu reinigen, wieder aufzubauen, Visual Studio neu zu starten, etc.

Das Problem wurde behoben, indem Visual Studio geschlossen und der Ordner .vs gelöscht wurde, bei dem es sich um einen versteckten Ordner im Lösungsverzeichnis handelt. Das Löschen des .vs-Ordners sollte keine Probleme verursachen, obwohl Sie Ihr Startprojekt zurücksetzen müssen.


0

In meinem Fall wurde nach der Verwendung eine neue Datei web.config erstellt Profiler. Durch das Wiederherstellen von web.config auf die vorherige Version wurde dieses Problem behoben. Es war eine VS2015 C # Webanwendung.


0

Wenn Sie Ihre Webanwendungsprüfung veröffentlichen, Configurationdie auf festgelegt ist Debug(standardmäßig ist in der Debug-Konfiguration so festgelegt, dass der Code nicht optimiert und die Symboltabelle vollständig erstellt wird).Geben Sie hier die Bildbeschreibung ein


-1

Ich habe mir die vorherigen Antworten angesehen und @ Wills Answear hat das Hauptproblem behoben, das ich hatte. Der andere konnte bearbeiten und fortfahren, aber als ich mir die AssemblyInfo.cs-Datei genauer ansah, fand ich heraus, dass einige Debugging-Funktionen deaktiviert waren.

Dann entfernte ich alte Debug-Attribute und fügte Folgendes hinzu, das ich aus einem anderen Projekt übernommen hatte

#if DEBUG
[assembly: System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute.DebuggingModes.DisableOptimizations | System.Diagnostics.DebuggableAttribute.DebuggingModes.EnableEditAndContinue | System.Diagnostics.DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | System.Diagnostics.DebuggableAttribute.DebuggingModes.Default)]
#endif

Ich bin jedoch der Meinung, dass dies nicht der beste Weg ist, dies zu tun.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.