wake-up-neo.com

Wie aktivieren Sie ".NET Framework-Quelltext-Stepping aktivieren"?

pdate 22. Februar 201: Der Microsoft Connect-Eintrag enthält eine Nachricht von Alok Shriram (Programm-Manager, Basisklassenbibliotheken, .NET Framework), dass das Problem jetzt behoben werden sollte. Der Connect-Eintrag ist markiert als Resolved (Fixed) :

Dieses Problem sollte jetzt behoben sein. Wir haben ein Update zu Referenzquellen veröffentlicht. Bitte lassen Sie uns wissen, falls Ihr Problem noch nicht behoben ist.

Ein Jahr und ein Halbes.

Bonus Links

Ursprüngliche Frage

Wie aktiviere ich das Steppen von .NET Framework-Quellen in Visual Studio 2010?


Anmerkung: Diese Frage ist ein Teil eines größeren Ganzen:


Visual Studio 2010 verfügt über eine neue Funktion:

  • Extras, Optionen, Debuggen, Allgemein, Steppen der .NET Framework-Quelle aktivieren

Screenshot of options menu

Befolgen Sie die Anweisungen auf der MSDN-Seite Gewusst wie: Debuggen von .NET Framework-Quelle :

So aktivieren Sie das Debuggen von .NET Framework-Quellen

  1. Klicken Sie im Menü Extras auf Optionen.

  2. Klicken Sie im Dialogfeld Optionen auf die Kategorie Debugging.

  3. Aktivieren Sie im Feld Allgemein die folgenden Kontrollkästchen:

    • Aktivieren Sie das Steppen von .NET Framework-Quellen
    • Aktivieren Sie die Quellserver-Unterstützung

Ich mache das:

Screenshot of options menu, highlighting the relevant options selected

Hinweis: Sie werden feststellen, wie auf der MSDN-Seite vermerkt und wie ich bemerkt habe, dass das Aktivieren von Steppen von .NET Framework-Quellen aktivieren automatisch das Deaktivieren von ** Nur meinen Code aktivieren (verwaltet) bewirkt nur). Ich habe auch die Diagnosemeldungen der Quellserverunterstützung aktiviert.

Wenn Sie diese Optionen aktivieren, wird automatisch ein Speicherort für den Download des Symbolcaches für mich festgelegt:

Screenshot of options menu, showing cache directory (highlighted)

Hinweis: Der Eintrag Microsoft Symbol Server ist bereits vorhanden (und kann nicht entfernt werden).


Die MSDN-Seite fordert zum Laden der Symbole auf:

Framework-Symbole über das Fenster Module laden

  1. Klicken Sie im Fenster Module mit der rechten Maustaste auf ein Modul, für das keine Symbole geladen sind. An der Spalte Symbolstatus können Sie erkennen, ob Symbole geladen sind oder nicht.

  2. Zeigen Sie auf Load Symbols From und klicken Sie auf Microsoft Symbol Servers, um Symbole vom Microsoft-Server für öffentliche Symbole herunterzuladen, oder auf Symbol Path, um sie aus einem Verzeichnis zu laden, in dem Sie zuvor Symbole gespeichert haben.

Ich versuche das:

enter image description here

und dann werden alle Symbole geladen:

Screenshot of modules window, as described above

Ich habe an einem Haltepunkt gesessen, der im Begriff ist, .NET Framework-Code aufzurufen:

Screenshot of code, transcribed below

protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
    base.ScaleControl(factor, specified);

Schieben F11 Bewirkt, dass der Debugger einfach zur nächsten Zeile wechselt:

Screenshot of code, transcribed below

protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
    base.ScaleControl(factor, specified);

    //Record the running scale factor used
    this.scaleFactor = new SizeF(
            this.scaleFactor.Width * factor.Width,
            this.scaleFactor.Height * factor.Height);

Wie aktiviere ich das Steppen von .NET Framework-Quellen in Visual Studio 2010?


Ich sitze an einem Haltepunkt in meinem Code. Ich versuche, auf eine Funktion weiter oben in der Aufrufliste zu doppelklicken. Dies würde es mir hoffentlich ermöglichen, jump zum .NET-Code zu gelangen:

enter image description here

Außer dass es nicht funktioniert: Visual Studio teilt mir mit, dass keine Quelle verfügbar ist:

Screenshot of error message saying No Source Available

Wie aktiviere ich das Steppen von .NET Framework-Quellen in Visual Studio 2010?


Wenn ich zur Disassembly-Ansicht wechsle, bevor ich versuche, in .NET-Code zu wechseln (Debug -> Windows -> Disassembly), wird ein call angezeigt. in den .NET Code:

Screenshot of code

Und wenn ich das tue, debugge ich am Ende eine Demontage von System.Windows.Forms.ScaleControl:

Screenshot of disassembly window

Dies ist nicht dasselbe oder genauso nützlich wie das Betreten der .NET Framework-Quelle.

Wie aktiviere ich das Steppen von .NET Framework-Quellen in Visual Studio 2010?


Der konfigurierte Symbol-Cache-Pfad auf meinem Computer enthält Symbol-Cache-Dateien:

Screenshot of folder listing

Es lädt also pdb Symboldateien herunter, lehnt jedoch deren Verwendung ab.

Wie aktiviere ich das Steppen von .NET Framework-Quellen in Visual Studio 2010?


Leppie schlug vor, dass ich das Debug-Protokoll überprüfe (bei geöffnetem Debug-Protokollfenster; andernfalls protokolliert es nichts):

Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'

Weiter oben im Protokoll wird angezeigt, wie Symbole für System.Windows.Forms.dll geladen werden:

Loaded 'C:\Windows\Assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Symbols loaded.

enter image description here

Es ist also ist , meine Symbole zu finden, behauptet jedoch, dass sie nicht gefunden werden konnten.

Wie aktiviere ich das Steppen von .NET Framework-Quellen in Visual Studio 2010?


Ein Typ aus Microsoft Italien schlägt vor, das Kontrollkästchen auszuschalten. Quelldateien müssen exakt mit der Originalversion übereinstimmen:

Screenshot of options window

Das hat es nicht behoben.

Wie aktiviere ich das Steppen von .NET Framework-Quellen in Visual Studio 2010?


Es wurde vermutet, dass ein Fehler mit dem Microsoft-Quellserver für . NET Framework 4. vorliegt. Aufgrund dieses Vorschlags habe ich das Projekt auf target . NET Framework 3.5 umgestellt:

enter image description here

Das hat es nicht behoben.

Wie aktiviere ich das Steppen von .NET Framework-Quellen in Visual Studio 2010?


Irgendwo fragte sich jemand faul, ob bei einer anderen Person dasselbe Problem aufgetreten war sie verwendete die 64-Bit-Version des Debuggers . Jetzt gibt es keine 64-Bit-Version von Visual Studio, aber ich habe versucht, mein Projekt von AnyCP auf x86 umzustellen (es wurde auf x64 JIT-fähig gemacht) Fall, dass Microsoft 64-Bit-Prozessoren nicht unterstützt:

enter image description here

Das konnte nicht behoben werden:

Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'

Wie aktiviere ich das Steppen von .NET Framework-Quellen in Visual Studio 2010?


Siehe auch

114
Ian Boyd

Die PDBs zum Durchlaufen des Quellcodes werden nur für RTM und Service Packs bereitgestellt. Wenn daher ein Sicherheitsupdate veröffentlicht wird, das die zu debuggende DLL ändert, führt dies zu einem Quellschritt um nicht zu funktionieren (das heißt, Sie erhalten die Meldung "Keine Quelle verfügbar" mit einem ausgegrauten "Nach Quelle suchen").

Wenn Sie jedoch alle erforderlichen Einstellungen vorgenommen haben, können Sie die folgende Problemumgehung verwenden. Die Problemumgehung besteht im Wesentlichen darin, die Sicherheitsupdates zu finden, die zu einer Änderung der DLL geführt haben, und diese dann zu entfernen. Dies hat den offensichtlichen Nachteil, dass diese Sicherheitsupdates auf Ihrem Computer entfernt werden.

Workaround

  1. Identifizieren Sie, in welcher DLL Sie debuggen möchten (z. B. System.Windows.Forms.dll).
  2. Öffnen Sie während des Debuggens das Fenster Module in Visual Studio und suchen Sie die Spalte Version . Wenn es sich bei der Version nicht um die RTM oder Service Pack-Version handelt, müssen Sie den Workflow ausführen. In der Regel wird in der RTM dll "Erstellt von: RTMRel ". Während eine DLL, die Teil eines Sicherheitsupdates war," Erstellt von: RTMGDR "anzeigt. Notieren Sie sich die Versionsnummer (zum Beispiel 4.0.30319.269, erstellt von: RTMGDR).
  3. Jetzt möchten wir das Update finden, mit dem diese Version erstellt wurde. Suchen Sie dazu unter support.Microsoft.com/kb/ nach der DLL und der Versionsnummer. Ich habe beispielsweise die folgende Google-Suche ausgeführt: site:support.Microsoft.com/kb System.Windows.Forms.dll 4.0.30319.269
  4. Bei der Suche sollten Informationen zu einem Update angezeigt werden. Notieren Sie die KB-Nummer in der Adressleiste. In meinem Beispiel war die Adresse http://support.Microsoft.com/kb/2604121, also KB2604121, interessiert uns.
  5. Gehen Sie zu Systemsteuerung-> Programme und Funktionen und klicken Sie auf "Installierte Updates anzeigen".
  6. Suchen Sie nach einem Update, in dem die KB-Nummer aufgeführt ist (Sie können die Suche oben rechts verwenden).
  7. Deinstallieren Sie dieses Update.
  8. Wiederholen Sie diesen Vorgang für dieselbe DLL, bis die DLL wieder die RTMRel-Version oder SP) aufweist. Beispielsweise musste ich für System.Windows.Forms.dll KB2686827, KB2604121, KB2518870 entfernen bevor es zurück zur RTMRel-Version war.

Sie müssen dies für jede DLL innerhalb des .NET Frameworks tun, in die Sie debuggen möchten.

Sobald dies erledigt ist, legen Sie einen Haltepunkt in der .net-Quelle fest (gehen Sie zum Beispiel zur Registerkarte Haltepunkte, sagen Sie Neu-> Umbrechen bei Funktion und geben Sie System.Windows.Forms.Form.Form ein) oder gehen Sie in eines der .net Methoden in dieser DLL.

35
Matt Smith

Leider gibt es ein Problem mit einem Microsoft, wie Leppie (und ich habe das gleiche Ergebnis gesehen) sehen

es sollte beachtet werden, dass Ihr Versuch trotzdem fehlschlagen würde, da Sie darauf verwiesen haben:

  • Microsoft Symbol Server

anstatt:

  • referencesource.Microsoft.com/symbols

Siehe den Abschnitt "FAQ/Problembehandlung" von Konfigurieren von Visual Studio zum Debuggen von .NET Framework-Quellcode

6
yoel halb

Ich habe die Antwort gefunden, denke ich.

Ich habe verfolgt, was auf Fiddler los war. Es scheint, dass derzeit nur die Symbole verfügbar sind und keine Quelle.

Wenn VS versucht, die Symbole vom Server der "Referenzquelle" zu laden, schlägt dies fehl (404). Da dies fehlschlägt, kann es meiner Meinung nach nicht den Quelldateien auf diesem Server zugeordnet werden.

http://referencesource.Microsoft.com/symbols/mscorlib.pdb/ED96A7F38A2940F39B9CA7AD9BC5CB671/mscorlib.pdb

Nach dem oben genannten Fehler versucht es einen Server namens 'msdl', auf dem er die tatsächliche PDB findet (aber es scheint, dass dieser keine Quellcode-Informationen hat).

http://msdl.Microsoft.com/download/symbols/mscorlib.pdb/ED96A7F38A2940F39B9CA7AD9BC5CB671/mscorlib.pd_

Alles in allem scheint es ein (temporäres) Microsoft-Problem mit ihren Servern zu sein.

Ich bin mir sicher, dass ich vor einiger Zeit Quellcode hatte. Aber jetzt funktioniert es nicht.

Bearbeiten:

Ich habe es mit verschiedenen .NET-Versionen probiert, alles das gleiche Ergebnis. :(

4
leppie

Im Moment funktioniert es nicht, wenn Sie SP1 installiert haben. Hier sind einige Kommentare zum Problemformular MS: http://social.msdn.Microsoft.com/Forums/en-US/refsourceserver/thread/41388c7b-582b-4e3f-8178-3d38a3c99639

1
watbywbarif

Hier sind die offiziellen Anweisungen https://referencesource.Microsoft.com/setup.html

Konfigurieren Sie Visual Studio 2013 für das Debuggen des .NET-Frameworks

Um Visual Studio 2013 zu konfigurieren, führen Sie folgende Schritte in den Tools aus -> Optionen -> Debugging -> Allgemeines Menü:

  • Deaktiviere nur meinen Code
  • Deaktivieren Sie den Schritt über Eigenschaften und Operatoren
  • Deaktivieren Sie, dass Quelldateien genau mit der Originalversion übereinstimmen müssen
  • Aktivieren Sie das .NET-Framework-Quellschrittverfahren
  • Aktivieren Sie die Unterstützung des Quellservers
0
Colonel Panic

Die Referenzquelle finden Sie hier zum Download:

Referenzquelle für .NET Framework 4.0

Dort finden Sie auch die Quellen für WCF, WF und sogar die 4.5 Beta/RC und viele weitere

Microsoft Referencesource NetFramework

0
Mare Infinitus

In meinem Fall habe ich eine alte Anwendung .NET 2.0WinForms debuggt und die Meldung "Quelle nicht verfügbar" erhalten. Ich habe alle empfohlenen Einstellungen ausprobiert.

Letztendlich habe ich die App so umgebaut, dass sie vorübergehend auf .NET 4.5 abzielte und die Quelle in die Lage versetzt wurde. Vielleicht war meine App einfach zu alt für den Quellschritt. Ich weiß zwar, dass der Zweck irgendwie besiegt wird, aber für schnelles und schmutziges Testen funktioniert es. Der Fehler, den ich habe, ist immer noch in .NET 4.5 vorhanden. :)

 Target Framework

0
Brian Chavez