问题标签 [dia-sdk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
111 浏览

visual-c++ - 为什么 DIA SDK get_guid 总是为 Class guid 返回 Bad ptr(0x000)?

我正在使用 DIA SDK 来枚举 COM 二进制文件(dlls/exes)的类型和接口。但是 get_guid 总是为该组件内使用的每个 Class(CoClass & Interface) 返回 Bad Ptr(0x0000) 吗?

我们可以从 co 类和接口的 pdb 中获取 guid 的任何其他方法。

问候乌斯曼

0 投票
1 回答
467 浏览

c++ - 使用 DIA SDK 列出 C++ PDB 中的类文件夹

我正在使用 C# 开发一个分析工具。它使用DIA SDK分析C++ PDB文件并列出所有类、函数、字段等。

我想知道类的文件夹名称,并明智地列出类、函数等文件夹。我已经看到了 IDiaSymbol 上的所有属性/函数,但在类的文件夹名称上找不到任何东西。

如何使用 DIA SDK 获取 C++ PDB 中类的文件夹名称?

谢谢

拉古

0 投票
1 回答
480 浏览

visual-studio-2010 - 从 .pdb 获取用于函数的增量链接 thunk?

我正在尝试使用 .pdb 和 DIA SDK 确定 .exe 的静态调用图。不幸的是,当增量链接时,函数调用的增量蹦床 thunk 在使用 dia2dump 示例时不会显示。

如果您在打开调试和增量链接的情况下运行并链接dia2dump示例(或此处的简单示例),则调用wprintfprintf不会出现在任何函数的符号转储中。但是,如果您禁用增量链接,它们会这样做。

有没有办法通过 DIA 获得函数使用的增量蹦床?还是我应该破解 .obj 和 .lib 文件?

0 投票
1 回答
242 浏览

c++ - 我正在寻找一个从 .PDB 文档中处理调试符号的 C++ 库

创建一个模块来解码 PDB 文档中定义的结构;任何人都可以为我提供一个可以从 PDB 文档中提取所需调试符号的模块吗?谢谢。

0 投票
1 回答
904 浏览

visual-studio-2010 - 获取我的 VC++ 代码使用的符号列表

我正在构建一个处理我的 VC++ 源代码的工具。为此,我需要获取符号列表,包括我的代码使用的局部变量名称及其类型。我知道 Visual C++ 2010 已经提供了一个 .bsc 文件,允许对象浏览器快速定位符号。但这是一个交互式工具。我需要获取文件中的符号列表。是否有任何工具允许我们以编程方式获取我们自己的 VC++ 源代码中使用的符号列表?

我尝试了微软提供的Debug Interface Access SDK。它允许我们读取 .pdb 文件以获取所使用的局部变量的名称。但我也想获得源代码中使用的确切类型名称。例如

DIA SDK 允许我们获取字符串“dwordVar”,它是一个局部变量的名称。但它不能告诉它的类型名称是“MYTYPE”。它只能告诉我们 MYTYPE 真正代表什么(比如 unsigned long)。但不是符号“MYTYPE”。

如果 Visual C++ 不提供此功能,是否有任何第三方工具支持此功能?

0 投票
1 回答
991 浏览

c++ - DIA SDK SymTagEnum 值

我目前正在将我使用 DIA SDK 检索到的 PDB 文件中的大量信息转储到 XML 文件中,以便我可以使用这些信息来显示有关项目结构等的内容。

为了命名 XML 节点,我有一个简单的函数,它将枚举的值转换为字符串,然后用于节点:

此函数包含此处列出的所有值:http: //msdn.microsoft.com/de-de/library/bkedss5f.aspx

现在,为了转储 DIA 信息,我基本上只是递归我使用的所有符号的子代pGlobal->findChildren(SymTagUDT, NULL, nsCaseSensitive, &pIDiaEnumSymbols)。奇怪的是,生成的 XML 包含很多看起来像这样的东西:

现在,不要管空的名称信息和其他东西,到目前为止,这一切都还没有完成。我真的很想知道什么样的符号的symTag 为 31。枚举器似乎包含 31 个元素,因此从 0 到 30 的值应该是有效的。有人知道这 31 可能是什么吗?有问题的函数如下所示:

它是 SystemC fifo 示例项目的一部分。没什么太花哨的,真的。

0 投票
1 回答
360 浏览

c++ - 来自 PDB 的 AST(例如通过 DIA)

我目前正在使用 DIA SDK 从 PDB 文件中获取一些非常有用的信息......现在,基本问题是:我可以使用多深?最佳方案是能够将所有内容都归结为抽象语法树......这甚至可能吗?如果没有,我可以使用调试数据分析走多远?

0 投票
0 回答
841 浏览

c# - 如何使用 DIA SDK 读取*code*(特别包括跳转表)?

我正在使用 C# 中的DIA SDK

现在我有类似的东西:

我将如何使用 DIA SDK 浏览代码,特别是switch在我的可执行文件中找到任何跳转表及其目标地址(即语句生成的那些)?

我已经验证了它们的存在,我只是不知道如何访问它们。

我标记了 C#,因为我将 C# 与 COM 一起使用,但我也标记了 C++,因为 SDK 最初是在 C++ 中(使用 COM)。随意删除任何可能不合适的内容;谢谢。

0 投票
3 回答
313 浏览

.net - 为什么 TlbImp 不能将此用于 DIA 的 COM 接口正确导入 .NET?

我尝试导入 Microsoft 的 DIA SDK 以用于 .NET:

这似乎在大多数情况下都可以正常工作,只是由于某种原因,它不包含某些接口(例如IDiaEnumFrameData),而包含其余接口则很好。

(该接口既不存在于 .DLL 文件中,也不存在于 .TLB 文件中——即使它存在于 C 和头文件中。)

这是什么原因造成的?

0 投票
2 回答
234 浏览

sdk - DIA x64 & 本地免费

我正在使用 DIA Sdk 从 PDB 文件中提取一些信息。我创建了非 com DiaSourceAlt 对象,因此我必须使用 LocalFree 来释放字符串。

以下代码在 x86 中运行良好,但在 x64 中,LocalFree 调用破坏了堆。

有什么建议吗?(我正在使用 msdia90.dll)

问候,毛罗。