web-dev-qa-db-fra.com

Pourquoi aucun symbole n'est-il chargé lors du débogage à distance?

Je veux utiliser le débogage à distance . Le programme que je veux déboguer est exécuté sur la machine b . Visual Studio est exécuté sur la machine 

Sur la machine b, j'ai un dossier avec les fichiers suivants:

  • msvcr72.dll
  • msvsmon.exe
  • NatDbgDE.dll
  • NatDbgDEUI.dll
  • NatDbgEE.dll
  • NatDbgEEUI.dll

Si vous pensez que certains fichiers sont manquants, pouvez-vous également décrire leur emplacement habituel?

Dans l'étape suivante, j'ai démarré le msvsmon.exe et mon programme sur la machine b. Sur une machine, j'ai lancé Visual Studio 2008 et ma solution dans laquelle le programme a été écrit. Ensuite, je choisis "Debug - Attach to Process". J'ai choisi "Transport à distance (natif uniquement sans authentification)". J'ai utilisé la bonne adresse IP comme qualificatif et pris le bon processus (programme.exe). Après un moment, le message suivant apparut dans une fenêtre contextuelle:

Exception non gérée à 0x7c812a7b dans Program.exe: 0xE0434F4D: 0xe0434f4d

Je peux continuer ou faire une pause; En continuant, l'exception se produit encore et encore et encore. J'ai donc appuyé sur pause et le message suivant est apparu:

Aucun symbole n'est chargé pour un cadre de pile d'appels. Le code source ne peut pas être affiché.

39
Sebastian Müller

Assurez-vous de copier le fichier .PDB généré avec votre assembly dans le même dossier sur la machine distante. Cela permettra au débogueur de récupérer les symboles de débogage.

25
Kyle Trauberman
  1. Ajouter un dossier partagé sur votre machine dev qui pointe vers l'emplacement des fichiers .pdb
  2. Configurez une variable d'environnement appelée _NT_SYMBOL_PATH sur la machine distante qui pointe vers le dossier partagé de votre machine dev.

Le débogueur distant va maintenant rechercher des symboles sur votre machine de développement. Pas besoin de les copier pour chaque build.

Voir MS Video ici .

Commencez à regarder 8 à 9 minutes. Il explique comment configurer le débogueur distant pour charger des symboles à partir d'un partage de disque sur votre ordinateur de développement.

Bonne chance!

16
BrianR
  • Dans le menu Outils de Visual studio 2010, choisissez Options. 
  • Dans la boîte de dialogue Options, ouvrez le nœud de débogage, puis cliquez sur Généraux.
  • Cochez Afficher tous les paramètres si nécessaire et localisez Activez uniquement mon code (Géré uniquement)
  • Décochez-la et cliquez sur OK

Une fois que vous pouvez attacher le processus distant

11
scrat789

Le débogage distant dans .NET ne fonctionnera pas si vous ne placez pas les fichiers .PDB dans le même répertoire où le code débogué existe.

Si VS ne parvient toujours pas à trouver la source pour le débogage, le code de débogage et la source du projet VS sont pas la même version. La solution est en train de reconstruire et de redéployer le projet.

5
artur02

0xE0434F4D est une exception du CLR (code géré, par exemple). Vous devez effectuer un débogage à distance avec authentification et choisir de déboguer le code géré. Il est également possible d'extraire les informations sur les exceptions gérées à l'aide de certaines extensions du débogueur, mais cela demande un peu plus de travail.

Références:

Si cassé c'est ...

4
1800 INFORMATION

1800 INFORMATION a raison, vous devez effectuer un débogage à distance avec l'authentification Windows pour pouvoir déboguer le code géré, sinon vous ne pourrez pas charger les symboles des assemblys gérés. Le faire fonctionner avec l'authentification est assez délicat, car cela nécessite, entre autres, des comptes locaux sur les deux machines avec des mots de passe identiques. Cette question et les réponses de chacun sont très utiles pour que cela fonctionne.

Débogage distant dans Visual Studio (VS2008), application Windows Forms

3
ajs410

J'ai eu les mêmes problèmes. J'ai trouvé la réponse sur les forums msdn Je vais simplement copier/coller la bonne réponse ici:

Assurez-vous que vous utilisez le version correcte de msvsmon.exe !!! C'est tout ce que c'était! J'ai eu le même problème lors du débogage à distance d'un C # application. J'utilisais x64 msvsmon.exe parce que le serveur exécute Windows Server 2008 64 bits, mais le application a été écrite pour x86, alors je devait exécuter la version x86 de msvsmon.exe afin de se débarrasser de cette erreur agaçante . Rien d'autre n'était nécessaire. Il suffit d’exécuter la version de msvsmon.exe qui correspond à l'architecture cible de votre application ^ _ ^

3
mcanti

Bien que les réponses ci-dessus soient correctes, je me suis souvent heurté aux PDB construits avec le débogage de Assembly en place à l'emplacement distant et non récupérés. Si vous utilisez TFS ou un autre mécanisme de génération prenant en charge la publication de vos symboles de débogage, je vous recommande de le faire. Ensuite, dans Options> Débogage> Symboles de Visual Studio, vous pouvez ajouter cet emplacement à l'option Serveurs de symboles pour charger ces symboles à chaque fois qu'ils correspondent.

Cela m’a permis de déboguer maudit près de tout ce qui est en cours d’exécution que j’ai écrit, même s’il s’agit d’une Assemblée appelée dynamiquement (chose que je ne pourrais pas travailler pendant toute ma vie si je ne publiais que des symboles avec l’Assemblée). Utilisez cette fonctionnalité très pratique!

3
CodeWarrior

Je me suis également heurté à cela lors de l'utilisation d'une configuration de génération} _ personnalisée. (DEV au lieu de Debug

Pour corriger cela, j'ai modifié les propriétés du projet -> Construire -> Sortie -> Paramètres avancés et me suis assuré que le paramètre Sortie -> Informations de débogage était complet ou pdb uniquement . La configuration par défaut de Release _ _ _ est généralement définie sur aucun_. 

1
SliverNinja - MSFT

Pour que cela fonctionne, allez dans Propriétés du projet, onglet Compiler et en définissant le chemin de sortie de la compilation vers ma machine distante, par exemple \Myserver\myshare\myappdir.

Dans l'onglet de débogage, l'option Utiliser l'ordinateur distant est cochée et configurée sur myserver.

1
oldDavid

Allez dans Outils-> Options-> Débogage-> Symboles et ajoutez le chemin d'accès aux fichiers .pdb pour l'exécutable. Le chemin sur ma machine locale a bien fonctionné. 

1
cemanuel

J'ai rencontré ce problème et les solutions ci-dessus ne m'ont pas résolu le problème. Dans mon cas, ma solution VS2010 comportait de nombreux projets. Le projet que j'essayais de déboguer à distance était non défini dans ma solution VS2010 en tant que projet StartUp, car mes scripts de création n'étaient pas tout à fait corrects.

J'ai cliqué avec le bouton droit de la souris sur le projet dans ma solution. J'essayais de déboguer. J'ai sélectionné Set as StartUp Project, puis mes symboles ont été chargés correctement et mon point d'arrêt a été touché.

0
Joel

J'ai eu le même problème lors du débogage à distance, il a été résolu avec les étapes suivantes sur VS 2008:

  1. vous copiez le fichier pdb local avec vos fichiers binaires
  2. Exécutez la même version de msvmon pour laquelle votre application a été créée. Si votre application est conçue pour une architecture x86, vous devez exécuter la version x86 de msvmon, même si vous l'exécutez sur une machine x64. Cela vous avertira lorsque vous essayez de courir, mais ça devrait marcher.
0
vinodsaluja

Selon la documentation, pour les symboles gérés (j'ai essayé de me connecter à un service Windows géré (construit contre .net 4.5) sur une machine distante avec Visual Studio 2012), les symboles devraient être sur la machine distante

Alors, j'ai juste gardé les symboles (assurez-vous qu'ils correspondent aux modules/assemblages de l'application sur la machine distante) sur la machine distante, partagez-les et faites-y référence via les paramètres de symboles du système local (où vs est en cours d'exécution).

Remarque: le service et les symboles ne doivent pas nécessairement figurer sur le même répertoire, car ils fonctionnent correctement pour moi avec le service Windows 2k12 + .net 4.5.

pour plus de détails:

http://msdn.Microsoft.com/en-us/library/bt727f1t(v=vs.100).aspx

Extrait du lien:

Localisation de fichiers de symboles (.pdb)


Les fichiers de symboles contiennent les informations de débogage pour les exécutables compilés. Les fichiers de symboles de l'application à déboguer doivent être les fichiers créés lors de la compilation des exécutables de l'application. Les fichiers de symboles doivent également être situés où le débogueur peut les trouver. 

• Les fichiers de symboles pour les applications natives doivent être situés sur l'ordinateur hôte Visual Studio.

Les fichiers de symboles pour les applications gérées doivent être situés sur l'ordinateur distant.

• Les fichiers de symboles pour les applications mixtes (gérées et natives) doivent se trouver sur l'ordinateur hôte Visual Studio et sur l'ordinateur distant.

Cordialement!

0
Dreamer