2009-06-10 25 views
0

DIA SDK & DbgEng (pas le DbgHelp) API basée sur COM et basée sur DbgHelp?Besoin d'aide pour DIA SDK & DbgEng

Si oui, comment puis-je appeler l'API DbgEng à partir d'une application C#. Je peux importer la bibliothèque DIA au projet C# en utilisant le fichier idl (tlibimp pour le fichier tlib généré), mais DbgEng n'a aucun fichier IDL.

J'ai vu un wrapper incomplet pour DbgEng qui encapsule manuellement l'API en utilisant C++ managé, mais cela manque de nombreuses fonctions. Puis-je importer DbgEng.DLL en C# automatiquement sans écrire de wrapper managé?

Deuxièmement, DIA SDK permet-il d'attacher un processus et d'étudier la mémoire (et éventuellement d'évaluer une expression), comme DbgEng ou simplement d'obtenir les symboles du fichier pdb? Jusqu'à présent, seul l'exemple que j'ai obtenu est Dia2dump qui ne traite que le fichier pdb.

Répondre

1
  1. SDK DIA est uniquement pour les symboles ne débogage est sans rapport avec la totalité DbgHelp.dll
  2. DbgEng.dll ont une API COM mais seulement intrfaces vous avez encore besoin à faire un peu pinvoking pour obtenir ces interfaces, son meilleur dans votre cas, pour envelopper ce dont vous avez besoin avec Managed C++ ou l'exposer à COM en utilisant C++.
0

C'est l'inverse - dbghelp est basé sur DIA.

+0

non vrai, du moins pas directement (ils peuvent utiliser la même base de code) mais vous pouvez utiliser DbgHelp sur les systèmes sans DIA SDK –

+0

Il est vrai que dbghelp.dll ne lie pas (dynamiquement) à msdia80.dll, mais dbghelp soit des liens statiques contre DIA ou utilise la même base de code: Il suffit de comparer la sortie de x msdia80! * Dia * et x dbghelp! * Dia * et voir ce que je veux dire. –