2017-08-08 4 views
0

Je suis nouveau dans l'environnement de programmation Windows. J'apprécierais donc si vous pouvez m'aider avec ceci:pdb incompatible ou non trouvé - Débogage dans les fenêtres

J'ai une application appelée Controller.exe que je construis sur TeamCity construisez le serveur. La version de l'application génère le fichier exe et le fichier pdb.

Lorsque j'exécute le Controller.exe sur mon ordinateur de déploiement, il se bloque et le vidage est généré.

Dans l'application ont permis que je plantage de dumping avec les éléments suivants:

unsigned long stackSize = 16384; 
SetThreadStackGuarantee(&stackSize); 
SetUnhandledExceptionFilter(WriteLargeMiniDump); 

La fonction WriteLargeMiniDump() écrit avec succès la décharge. Je le sais parce que quand je lance le Controller.exe sur ma machine de développement, il génère un vidage et je peux l'ouvrir avec succès et voir la ligne de crash dans le code source.

Cependant, dans le cas de exe et pdb généré par le serveur TeamCity, je ne peux pas déboguer le vidage. Lorsque j'ouvre le fichier de vidage dans visual studio 2015 et essayez de Debug with Native Only il est dit pdb non chargé.

J'ai parcouru pour vérifier si le fichier pdb est correct. J'ai donc téléchargé Debugging Tools for windows qui comme symchk.exe.

Quand je lance symchk.exe lui donne les erreurs suivantes:

SYMCHK: Controller.exe FAILED - Controller.pdb mismatched or not found 

SYMCHK: FAILED files = 1 
SYMCHK: PASSED + IGNORED files = 0 

Controller.pdb est dans le même répertoire où je copiais le exe généré à partir TeamCity serveur.

Ai-je oublié quelque chose ici?

+0

Quelles sont les tailles de fichier des binaires? Parlons-nous d'assemblages C++ ou .NET natifs ici? C'est une erreur étrange, il semble presque que le .pdb est haché en raison d'une erreur de copie ou d'une erreur d'écriture double. –

+0

@ justin.m.chase 'exe' est d'environ 2MB et' pdb' est d'environ 15MB – Monku

+1

Regardez aussi les horodatages. Peut-être que la version a été modifiée pour ne pas générer de bases de données de débogage et que vous copiez une carte pdb obsolète. – IInspectable

Répondre

0

J'ai réussi à résoudre ce problème. Le problème était que l'auteur original du projet avait enregistré pdb dans le référentiel SVN, que TeamCity était en train de construire. Par conséquent, le exe généré ne correspond pas au pdb. Et selon la documentation MSDN, nous devons utiliser le pdb qui est généré au cours de la génération de exe.

En utilisant le pdb généré au cours de la construction de exe, j'ai été en mesure de déboguer le fichier dump.

Un lien important qui m'a aidé à comprendre pdb fichiers est: https://www.wintellect.com/pdb-files-what-every-developer-must-know