2012-06-11 1 views
1

court et concis:Debugging (Win): DIA contre DBGHELP

Quelles sont les différences réelles entre DIA (Debug Interface d'accès) et les bibliothèques DBGHELP? Je sais que DIA est basé sur COM et semble être extrêmement puissant (ainsi que capable d'être utilisé avec des processus gérés et non gérés), alors que le DBGHELP semble être très pratique à utiliser mais offre moins de possibilités. Est-ce que quelqu'un peut expliquer où ces deux ont leurs différences et ce qui peut être fait avec l'un, mais pas avec l'autre? Je suis vraiment du mal à trouver des informations concluantes complet sur Internet :(

Désolé si cela semble être une question terne, et grâce à toutes les réponses que vous avez pour moi! :)

Cordialement PuerNoctis

Répondre

2

DIA a une interface COM cohérente. DbgHelp consiste en un ensemble de fonctions C standard.

Voici deux aricles j'ai écrit sur DIA (avec C++ Des échantillons), qui montre la puissance de DIA:

  1. Symbols File Locator
  2. How to Inspect the Content of a Program Database (PDB) File

Si possible, utilisez DIA et non DbgHelp , puisque DIA peut être utilisé par n'importe quel programme compatible COM.

+0

Merci pour les liens! Chose amusante: j'ai déjà eu un aperçu de vos articles il y a quelques minutes;) Une autre question: Est-il vrai que DIA peut être utilisé pour déboguer des applications non gérées ainsi que des applications managées? – PuerNoctis

+0

Vous êtes les bienvenus! Comme mentionné, DIA est basé sur COM, ce qui signifie un code non géré. Vous pouvez bien sûr utiliser des ponts pour consommer DIA à partir d'une application gérée.Étant donné que le code managé inclut le code source complet et n'utilise pas les symboles PDB, je ne pense pas qu'il corresponde aux applications managées de débogage. – mox

+0

Oh d'accord. J'ai également trouvé l'API de débogage CLR entre-temps, qui fournit également des interfaces COM pour déboguer l'application gérée (autour des interfaces ICorDebug). Encore merci pour votre expertise jusqu'à présent! Maintenant, je sais comment DIA et DBGHELP corrèlent :) – PuerNoctis

0

C'est la même chose. DbgHelp est l'api de base, il est utilisable à partir de C. DIA est un modèle d'objet COM qui le rend plus facile à utiliser et le rend accessible à partir de la plupart des langages. C'est un acronyme pour Debug Interface Access, l'accent sur "Access". La documentation MSDN pour cela starts here.

+0

Merci! Y a-t-il des inconvénients «majeurs» entre les uns et les autres qui méritent d'être mentionnés? – PuerNoctis

+0

Vous percevrez tout problème que vous rencontrerez en premier comme un inconvénient majeur. Je ne peux pas deviner ce que ce sera. –

+0

Bon, ça me semble logique :) – PuerNoctis