DIA SDK和DbgEng需要帮助

时间:2020-12-08 20:59:19

Are DIA SDK & DbgEng (Not the DbgHelp) both COM based API and based on DbgHelp?

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

If so, how can I call DbgEng API from a C# application. I can import the DIA library to C# project using idl file (tlibimp for generated tlib file), but DbgEng doesn't have any IDL file.

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

I have seen an incomplete wrapper for DbgEng which manually wraps the API using Managed C++, but that misses many of the functions. Can I import DbgEng.DLL in C# automatically without writing any managed wrapper?

我已经看到了DbgEng的一个不完整的包装器,它使用Managed C ++手动包装API,但是它错过了很多功能。我可以自动导入C#中的DbgEng.DLL而无需编写任何托管包装器吗?

Secondly, does DIA SDK allows a process to be attached and memory to be investigated (and possibly evaluate an expression), like DbgEng or it is just to get the symbols from the pdb file? So far only example I got is Dia2dump which only parses the pdb file.

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

2 个解决方案

#1


  1. DIA SDK is only for symbols not debugging it is totality unrelated to DbgHelp.dll
  2. DIA SDK仅适用于未调试的符号,它与DbgHelp.dll无关

  3. DbgEng.dll have some COM API but only intrfaces you still need to-do some pinvoking to get those interfaces, its better in your case to wrap what you need with Managed C++ or expose it thru COM using C++.
  4. DbgEng.dll有一些COM API,但只有你需要做一些pinvoking才能获得这些接口,在你的情况下,它更好地用Managed C ++包装你需要的东西或者用COM通过COM公开它。

#2


It is the other way round -- dbghelp is based on DIA.

反过来说 - dbghelp基于DIA。

#1


  1. DIA SDK is only for symbols not debugging it is totality unrelated to DbgHelp.dll
  2. DIA SDK仅适用于未调试的符号,它与DbgHelp.dll无关

  3. DbgEng.dll have some COM API but only intrfaces you still need to-do some pinvoking to get those interfaces, its better in your case to wrap what you need with Managed C++ or expose it thru COM using C++.
  4. DbgEng.dll有一些COM API,但只有你需要做一些pinvoking才能获得这些接口,在你的情况下,它更好地用Managed C ++包装你需要的东西或者用COM通过COM公开它。

#2


It is the other way round -- dbghelp is based on DIA.

反过来说 - dbghelp基于DIA。