2010-07-16 5 views
7

OK, je réalise que les fichiers PDB sont les fichiers de symboles pour les assemblages .NET. Mais je n'ai jamais vraiment examiné leur utilisation prolongée.Que font réellement les fichiers pdb?

Si je me connecte avec un débogueur distant d'un studio visuel qui a le code en cours de chargement, ai-je réellement besoin des fichiers PDB sur la machine distante? Est-ce que j'obtiendrai des informations d'exception non gérées sans elles sur la machine où le code est exécuté sans les fichiers PDB et un débogueur avec le code source connecté?

Que font-ils d'autre?

+0

La ressource classique est sur [le blog de John Robbins] (http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must -know.aspx). –

+0

Très utile! Merci! – Matt

Répondre

2

Je ne me souviens pas si la PDB est nécessaire sur la machine distante dans une situation de débogage à distance, mais entre autres choses les PDB contiennent le numéro de ligne de code source à la carte de décalage de code compilé. Vous ne pouvez pas parcourir le code source en utilisant uniquement l'assembly géré seul. Comme les assemblages gérés conservent beaucoup de noms de symboles de texte du code source d'origine, vous pouvez explorer un exécutable géré avec un débogueur sans la PDB, mais vous ne pourrez voir que les noms de type et les symboles publics - vous ne verrez pas de noms pour les symboles locaux, car ceux-ci ne sont pas nécessaires pour lier à l'assembly .NET ou JIT l'IL au code natif lors de l'exécution.

Les notifications d'exceptions non gérées ne sont pas liées à la présence ou non d'un PDB. Si un débogueur est attaché au processus, distant ou non, le débogueur obtiendra d'abord la fissure à l'exception.

1

Le pdb n'est pas nécessaire sur la machine distante. Le débogueur lui-même doit être en mesure de le trouver, pas la pièce de l'agent distant.