Débogage une version de version d'une DLL (avec fichier PDB)
-
12-09-2019 - |
Question
Si j'ai une DLL (qui a été construit dans la version en mode) et le fichier correspondant APB, est-il possible de débogage (étape dans) classes / méthodes contenues dans cette DLL?
Si oui, quelles sont les étapes nécessaires / configuration (par exemple, où placer le fichier PDB)?
Modifier
Si avoir le fichier PDB au même endroit que la DLL (dans le répertoire bin / de débogage d'une application de test simple de la console). Je peux voir que les symboles de la DLL sont chargés (dans la fenêtre de sortie et également dans la fenêtre Modules), mais je ne peux pas entrer dans les méthodes de cette DLL.
Serait-ce le résultat d'optimisations du compilateur (comme décrit par Michael dans sa réponse)?
La solution 3
J'ai finalement trouvé ce que les problèmes de débogage provoquer une DLL qui a été construit dans la configuration de sortie:
Tout d'abord, il fonctionne essentiellement comme prévu. Ce qui signifie que, si j'ai une DLL intégrée dans la version configuration plus le fichier PDB correspondant, alors je peux déboguer les classes / méthodes contenues dans cette DLL.
Quand j'ai essayé, je malheureusement essayé d'entrer dans les méthodes d'une classe qui a le DebuggerStepThroughAttribute , par exemple:
[System.Diagnostics.DebuggerStepThrough]
public class MyClass {
public void Test() { ... }
}
Dans ce cas, il est bien sûr pas possible d'entrer dans le procédé à partir du débogueur (comme prévu / prévu).
Alors que tout fonctionne comme prévu. Merci beaucoup pour vos réponses.
Autres conseils
Le PDB est habituellement (pour moi au moins) détectée si elle est à côté de la dll (comme avec les fichiers xml IntelliSense).
En variante; vous aurez besoin d'un point de rupture après que le module a chargé ...
Au point de rupture, faire apparaître la fenêtre "Modules" (Ctrl + D, M - ou Debug-> Windows-> Modules). Faites un clic droit sur votre dll « Charger les symboles de », « chemin de symbole », etc.
Oui, vous pouvez déboguer le code de libération avec un APB. Il y a quelques pièges mais avec un code optimisé de débogage, plus d'info ici et
Mise au point d'une version release est généralement beaucoup plus difficile que le débogage d'une version de débogage. En général, vous aurez besoin d'une certaine compréhension de l'assembleur x86 et vous passerez probablement un certain temps à regarder la fenêtre de démontage. Cela tend à être la seule façon de comprendre ce que la ligne de code que vous êtes vraiment puisque dans une version release avec des optimisations du compilateur peut faire inline significatif et réordonnancement d'instruction. De plus, je trouve le débogueur échoue fréquemment signaler correctement les valeurs des variables. Si vous avez besoin de connaître la valeur d'une variable et vous n'êtes pas sûr que le débogueur est correct, allez dans la fenêtre de démontage et de trouver l'emplacement de mémoire ou l'enregistrer est situé dans. Les fichiers pdb peuvent être stockés dans un serveur de symboles. Consultez Configuration d'un serveur de symboles pour un bon tutoriel. Chaque produit que nous construisons sur une machine de construction publie les symboles à notre serveur de symboles, de sorte que nous pouvons toujours déboguer toute vidages que nous recevons de Winqual.