0

DIA SDK 和 DbgEng(不是 DbgHelp)是基于 COM 的 API 还是基于 DbgHelp?

如果是这样,我如何从 C# 应用程序调用 DbgEng API。我可以使用 idl 文件(用于生成的 tlib 文件的 tlibimp)将 DIA 库导入 C# 项目,但 DbgEng 没有任何 IDL 文件。

我看到了一个不完整的DbgEng包装器, 它使用托管 C++ 手动包装 API,但它错过了许多功能。我可以在不编写任何托管包装器的情况下自动在 C# 中导入 DbgEng.DLL 吗?

其次,DIA SDK 是否允许附加进程并调查内存(并可能评估表达式),例如 DbgEng 还是只是从 pdb 文件中获取符号?到目前为止,我得到的唯一例子是 Dia2dump,它只解析 pdb 文件。

4

2 回答 2

1
  1. DIA SDK 仅适用于不调试的符号,它与 DbgHelp.dll 完全无关
  2. DbgEng.dll 有一些 COM API,但只有接口,你仍然需要做一些 pinvoking 来获取这些接口,在你的情况下,最好用托管 C++ 包装你需要的东西,或者使用 C++ 通过 COM 公开它。
于 2009-06-10T14:06:50.783 回答
1

反之亦然—— dbghelp 基于 DIA。

于 2009-06-10T15:51:28.917 回答