OVH Cloud OVH Cloud

Utiliser Windbg (problème de symboles) ?

1 réponse
Avatar
ByB
Bonjour,

Je développe des applications en VC++, et j'ai prévu que mon
application, en cas de crash, générerait des fichiers au format
MiniDump de Microsoft.

J'ai essayé d'exploiter ces fichiers sous Windbg avec l'aide du fichier
.pdb résultant de la compilation, ainsi que de l' .exe et des sources
en C++, mais j'ai toujours des problèmes car je ne sais pas quel chemin
donner à Windbg pour ce qui concerne les "symboles".

Quelqu'un peut-il m'expliquer ce que sont ces symboles (je croyais
qu'il s'agissait du fichier .pdb ?), où je peux les trouver, ce que je
dois en faire, et comment je dois configurer Windbg pour que mon
fichier dump puisse être exploité ?

Merci.

--
La recherche a besoin d'argent dans deux domaines prioritaires : le
cancer et les missiles antimissiles. Pour les missiles antimissiles, il
y a les impôts. Pour le cancer, on fait la quête.
[Pierre Desproges]

1 réponse

Avatar
Arnaud Debaene
"ByB" a écrit dans le message de news:

Bonjour,

Je développe des applications en VC++, et j'ai prévu que mon application,
en cas de crash, générerait des fichiers au format MiniDump de Microsoft.

J'ai essayé d'exploiter ces fichiers sous Windbg avec l'aide du fichier
.pdb résultant de la compilation, ainsi que de l' .exe et des sources en
C++, mais j'ai toujours des problèmes car je ne sais pas quel chemin
donner à Windbg pour ce qui concerne les "symboles".

Quelqu'un peut-il m'expliquer ce que sont ces symboles (je croyais qu'il
s'agissait du fichier .pdb ?), où je peux les trouver, ce que je dois en
faire, et comment je dois configurer Windbg pour que mon fichier dump
puisse être exploité ?



Les symboles sont bien les .pdb.

1) Est-ce que tu es sûr que les pdb que tu utilises correspondent bien au
binaire qui a généré le crash?

2) Qu'est que dis WinDbg exactement? Je suspecte qu'il te signale simplement
qu'il n'a pas les pdb pour les librairies de Windows (kernel32.dll,
user32.dll, etc...). La plupart du temps, on peut se passer de ces symboles
là (le bug étant TRES probablement dans ton code, pas dans Windows ;-).
Ceci-dit, si tu as besoin de ces symboles, rajoutes çà au symbol-path :

srv*c:SymbolsCache*http://msdl.microsoft.com/download/symbols

Avec c:SymbolsCache un répertoire qui te servira de cache local pour les
pdb corresponants à tes versions des DLLs système. Attention qu à la
première utilisation de WinDbg après ce réglage, ca risque d'être assez long
de télécharger tous les pdb correspondants aux DLLs utilisées par ton appli.

Pour plus de détails, voir le chapitre "Using Symbol Servers and Symbol
Stores" dans l'aide de WinDbg.

Arnaud
MVP - VC