2010-09-08 10 views

Répondre

6

J'ai suivi vos questions. Il y a un contexte que vous auriez dû mettre dans votre question, je pense que vous essayez de déboguer un plug-in DirectShow dont vous n'avez pas le code source. Une sorte de gadget d'appareil photo. Non, l'ouverture d'un fichier .pdb dans un éditeur de texte ne vous montrera rien d'utile. Ce sont des données binaires. Je sais que vous avez un .pdb pertinent pour le plug-in avec lequel vous travaillez, vous obtenez des traces de pile décentes avec des fonctions nommées. Vous avez probablement obtenu le fichier .pdb du serveur Microsoft Symbol. La lecture d'un fichier .pdb est le travail du débogueur. Il y a plusieurs API disponibles pour le lire vous-même, l'API dbghelp est le noyau.

Mais il pas vous montrer quelque chose que vous ne connaissez pas déjà du débogueur. Le fichier .pdb est juste une base de données de fonctions. Vous avez le dépouillé, il ne montrera jamais plus que ce que vous voyez dans la fenêtre de pile d'appel.

En fin de compte, c'est une chaîne de questions XY. Vous continuez à poser des questions sur Y sans jamais révéler ce qu'est le vrai problème X. Vous obtiendrez des réponses inutiles, comme celle-ci, jusqu'à ce que vous nous parliez de X.

+0

bravo, surtout à votre analogie de question XY. – tenfour

+1

Belle recherche. Je pense qu'une caractéristique de la pile devrait être de montrer l'histoire de la question récente de l'OP .. Je pense que je vais suggérer cela sur méta. – NotMe

+0

Pourquoi appelez-vous le pdb "le dépouillé"? – user198729

0

Il semble que ce que vous voulez, c'est la commande dumpbin. Notez que cela nécessite que les outils VC soient dans votre PATH; vous pouvez soit utiliser le raccourci approprié dans le menu Démarrer ou exécuter %VSxxCOMNTOOLS%\vsvars32.bat, où xx est un mnémonique pour la version actuelle de VC que vous utilisez: la façon la plus facile de comprendre exactement quelle variable d'environnement à utiliser est probablement de courir set et voir ce que les variables avec de tels noms sont en fait définies dans votre environnement. Par exemple, sur un système avec MSVC 2005 Express et MSVC 2008 Express est installé, je reçois ceci:

 
C:\code\xemacs-beta\nt>set | grep "VS.*COMNTOOLS" 
VS80COMNTOOLS=C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\ 
VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\ 

Ainsi, pour créer une nouvelle fenêtre shell avec les outils VC 9 (2008) ajoutés au chemin, je peux exécuter start "VC 9" "%VS90COMNTOOLS%\vsvars32.bat". (L'argument "VC 9" est le titre de la nouvelle fenêtre.)

Quoi qu'il en soit, avec les outils VC dans PATH, nous pouvons exécuter ces commandes comme dumpbin /disasm ..\src\temacs.exe > temacs.disasm (sauf que vous n'êtes probablement pas dans le nt sous-répertoire d'un arbre xemacs, donc coller n'importe quel chemin que vous voulez là-bas). Cela va désassembler le fichier donné, en utilisant n'importe quel PDB approprié qu'il peut trouver pour les noms de symboles.

Qu'est-ce que MS appelle la documentation se trouve dans le dumpbin MSDN entry (en fait, il est beaucoup mieux que je me suis souvenu comme être - peut-être j'étais mal à elle d'être si uninformative sur le drapeau /disasm en particulier), mais n » t sous-estimer l'utilité de dumpbin /? - il peut ne pas donner autant d'informations, mais au moins vous pouvez tout voir sur l'écran en même temps.

1

Garder à l'esprit les remarques de @Hans Passant - Je pense que la question mérite une réponse, sinon rien d'autre que pour ceux qui arrivent ici par la recherche.L'outil livré pour l'inspection PDB est le DBH. Il est livré avec des outils de débogage pour Windows. Bien qu'il s'agisse d'un outil de ligne de commande (je suis personnellement de la génération GUI), il est extrêmement riche en fonctionnalités et vous auriez du mal à trouver tout ce qu'il ne peut pas faire en une ligne.

Questions connexes