2009-10-25 2 views
10

J'utilise Jochen Kalmbach's StackWalker class from CodeProject pour générer une pile quand une exception se produit dans ma DLL.Est-ce que DbgHelp.dll est intégré à Windows? Est-ce que je peux compter sur le fait d'être là?

Elle repose sur DbgHelp.dll

est DbgHelp.dll intégré à Windows Vista, WS2008, Windows 7?

Je connais The Debugging Tools for Windows de Microsoft, et je suis conscient que DbgHelp.dll est livré dans ce paquet. Mais j'ai également trouvé DbgHelp.dll dans% windir% \ system32 sur ma machine.


Si elle n'est pas installé par défaut, est-il un moyen pour moi de le redistribuer avec debug de ma DLL?

Répondre

10

Microsoft says:

"La bibliothèque DbgHelp est mis en œuvre par DbgHelp.dll Cette DLL est inclus dans le système d'exploitation."

Notez que la version actuellement incluse avec les outils de débogage pour Windows n'est peut-être pas la même version que celle fournie avec le système d'exploitation.

+0

C'est en partie vrai, d'après ce que j'ai pu dire, il n'est pas livré avec NT 4/Windows 2000 mais depuis XP/Server 2003 je n'ai pas eu de problème avec les DLL manquantes mais ça vaut le coup. S'il manque, vous pouvez toujours télécharger et installer les outils de débogage sur cette machine et cela fonctionnera. C'est ce que j'ai dû faire dans le passé avec Windows 2000 pour déboguer de plus petits problèmes. –

2

Il est généralement préférable d'expédier dbghelp.dll avec votre application pour vous assurer d'obtenir la version que vous attendez quand même. Je crois que c'est redistribuable pour cette raison même. Cependant, il ne faut pas oublier que la bibliothèque d'exécution de débogage n'est pas redistribuable. Vos builds de débogage doivent toujours être (en termes VC++) "release" builds.

+0

Encore ça dépend de msvcrt.dll (sans indication de version dans le nom de fichier), donc il n'est pas aussi distribuable que dans "standalone". – Janosch

+0

Notez que selon http://go.microsoft.com/fwlink/?LinkId=294840 vous ne pouvez pas expédier les DLL 'dbghelp' & co eux-mêmes, mais plutôt le' .msi', "non modifié, en tant que package" qui inclut dit DLLs: Program Files \ Windows Kits \ 8.1 \ Débogueurs \ Redist \ X86 Débogueurs et Outils-x86_en-us.msi Program Files \ Windows Kits \ 8.1 \ Débogueurs \ Redist \ X64 Débogueurs et Tools-x64_en-us. msi'. – vladr

Questions connexes