7

J'essaye de configurer une API web en utilisant ASP.NET Core sous OS X. J'ai configuré mon environnement correctement (je pense) et je suis capable de construire et de lancer mon application en utilisant dotnet build à partir du terminal, et je suis en mesure de démarrer le débogage à partir de Visual Studio Code avec des points d'arrêt fonctionnant comme prévu. Mon problème est que je reçois une erreur en essayant d'interroger ma base de données Sqlite en utilisant le noyau EF. Le noyau EF n'est pas vraiment important ici, parce que quand je débogue et essaye de trouver quelle est l'erreur, je n'obtiens aucune trace de pile. Lorsque je fais un pas sur le code à défaut les impressions de la console de débogage:Visual Studio Code ne charge pas les symboles sous OS X

Exception thrown: 'System.InvalidOperationException' in Microsoft.EntityFrameworkCore.dll 
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Diagnostics.StackTrace.dll'. Cannot find or open the symbol file. 
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Reflection.Metadata.dll'. Cannot find or open the symbol file. 
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.IO.MemoryMappedFiles.dll'. Cannot find or open the symbol file. 
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.IO.UnmanagedMemoryStream.dll'. Cannot find or open the symbol file. 

Beaucoup de ces Cannot find or open the symbol file. sont imprimées au démarrage ainsi. J'ai vérifié que les fichiers sont à l'emplacement spécifié, et qu'il ne devrait y avoir aucun problème d'accès en lecture (ayant commencé vs code avec sudo code . et même fait un sudo chmod 777 * dans le dossier en question).

Alors, des idées pour lesquelles les symboles ne sont pas chargés?

+0

Il semble que vous n'ayez pas installé Visual Studio Code et/ou .NET Core correctement. Pouvez-vous modifier votre message pour décrire les étapes que vous avez l'habitude d'installer? Tu n'aurais pas du faire le chmod du tout. (Je cours heureusement VSCode sur OSX depuis un certain temps maintenant.) – JasCav

+0

Installation standard en utilisant l'homebrew comme décrit ici: https://www.microsoft.com/net/core#macos. VS Code installé à l'aide du programme d'installation standard. Le sudo et le chmod n'étaient que des plans dans l'obscurité, j'ai supposé que l'emplacement des fichiers pdb était inaccessible par le processus en cours ou quelque chose comme ça. – Erik

+0

J'ai suivi les mêmes instructions (OSX) et j'ai exactement le même problème. Je ne veux pas regarder un mur d'avertissements chaque fois que je débogue –

Répondre

0

Je pense que vous avez confondu ce que VSCode dit qu'il ne peut pas charger. Ce n'est pas dire qu'il ne peut pas charger la DLL. Les fichiers 'Symbol' ont une extension .PDB. Afin de déboguer une erreur générée par une DLL, un débogueur a besoin du fichier de symbole correspondant, donc changer les permissions sur la DLL ne fera pas disparaître l'erreur si le fichier PDB n'est pas là. Je viens de commencer à utiliser VSCode sur un Mac et d'après ce que je peux voir, vous n'obtenez pas les fichiers PDB si vous installez dotnet core avec Homebrew (qui est ce qu'ils recommandent) et je vois des messages similaires quand je Démarrez le débogueur. Cela ne m'empêche pas de déboguer mon propre code car il y a un fichier PDB généré avec ma DLL. Cela causerait seulement un problème si vous deviez déboguer quelque chose qui ne va pas dans le cœur de dotnet lui-même.

+0

Même scénario, mais VSCode est toujours incapable de passer par le code des paquets installés, par exemple. Nancy, EF, etc. Je ne vois que mon code et toutes les autres instructions de la trace de la pile sont "No name". Des indices? –

+0

Je ne pense pas que je suis confus :) Si le dll ne chargeait pas le processus serait planter et brûler beaucoup plus vite. Je suis capable de déboguer, de définir des points d'arrêt et de passer au travers du code comme je l'ai dit dans la question. C'est juste que lorsque la fenêtre de sortie est censée imprimer la trace de la pile, elle ne peut pas trouver les symboles nécessaires. – Erik

+0

@Erik J'ai le même problème. Quelle était votre solution? Installer des symboles par une autre méthode d'installation? –

4

Ran dans les mêmes problèmes en cours d'exécution VS Code sur une machine virtuelle Windows 10.

La résolution que j'ai trouvée était d'ajouter un "debugType": "portable" à la section buildOptions de mon fichier project.json.

mine ressemble à ceci:

"buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true, 
    "debugType": "portable" 
} 

Debugging dans le code VS n'est pas si mauvaise.

+0

Hé, ça a marché! Et vous avez raison, ce n'est pas un mauvais débogueur du tout. – joshmcode

+0

Cela se produit apparemment par défaut pour OSX et Linux selon ce qui suit: https://docs.microsoft.com/nb-no/dotnet/articles/core/tutorials/using-on-macos – Erik

+5

Ceci est déjà la norme à partir de 1.1. Toujours le même problème. –