web-dev-qa-db-fra.com

Vs2017 Source non disponible

J'essaie de déboguer un System.Net.Http.Formating.dll en cliquant sur la trace de la pile:

System.Net.Http.Formatting.dll!System.Net.Http.Formatting.JsonMediaTypeFormatter.WriteToStreamAsync.AnonymousMethod__c()

J'ai le "Juste mon code désactivé" et j'ai les serveurs de symboles suivants:

https://nuget.smbsrc.net
http://localhost:33417/ (dot peek)
Microsoft Symbol Server

J'ai la pdb disponible, mais j'obtiens l'erreur/l'image suivante. 

Comment bien le surmonter? 

Pourquoi est-il si compliqué de déboguer du code source tiers dans Visual Studio?

 enter image description here

Après avoir suivi le lien indiqué par @Jack Zhai-MSFT, j'ai enfin pu comprendre les raisons pour lesquelles le framework .net ne pouvait pas être débogué.

Il est apparu que les symboles étaient téléchargés sans leur source respective, car je désignais Microsoft Symbol Server au lieu de http://referencesource.Microsoft.com/symbols

Ensuite, ma tentative suivante a consisté à décocher "Microsoft Symbols Server" ou à modifier l'ordre dans le menu Symboles. À ma grande surprise, je ne pouvais ni le supprimer, ni en modifier l'ordre, et même après l'avoir désactivé, les symboles étaient toujours récupérés.

C'est peut-être un bogue de la communauté VS2017.

Ce que j'ai fait ensuite, qui a résolu le problème:

  1. Suppression de mon cache de symboles contenant des pdbs trompeurs sans source
  2. N'a activé que mon indicateur de code, en désactivant l'option «Activer le code source .NET Framework» et a démarré l'application, en mode débogage
  3. En pause à un point d'arrêt dans lequel, à la pile, j'ai eu accès au code que je voulais déboguer
  4. Double-cliquez sur cette pile, puis sur Charger les symboles.
  5. Cette fois-ci, pour une raison quelconque, Microsoft Symbol Server a été ignoré et les pdb de droite ont été téléchargés.

Notez que, toujours, je ne pouvais pas télécharger des "symboles optimisés" comme system.net.http, mais je vais essayer de comprendre cela ensuite

De plus, j’ai configuré les serveurs de symboles en utilisant cela comme référence, ce qui m’a aidé à obtenir rapidement les symboles de tiers (sauf .net)

https://www.symbolsource.org/Public/Wiki/Using

 enter image description here

MODIFIER:

Avec l'aide de dotPeeker, j'ai pu obtenir tous les fichiers pdb manquants en:

  1. Charger ces dll dans dotpeeker (ex: System.Net.Http)
  2. Charger l'un des fichiers source à partir de cette DLL
  3. Appuyez sur Generate PDB et stockez-le dans le même dossier de cache que VS2017

PHEW!! Quel ennui pour quelque chose qui aurait dû être trivial!

Pour déboguer le code source tiers, vous pouvez utiliser le .NET Reflector ou dotPeek avec VS.

Référence:

Est-il possible de déboguer du code tiers en utilisant la source décompilée avec dotPeek?

Mettre à jour:

Si vous souhaitez simplement déboguer le code source .NET, voir: Comment déboguer le code source du framework .NET 4.6 dans Visual Studio 2017?

1
Jack Zhai-MSFT