获取我的 VC++ 代码使用的符号列表

2024-05-08

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

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

MYTYPE dwordVar;

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

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


尝试这个程序:

typedef unsigned long MYTYPE;

int wmain(int argc, wchar_t *argv[])
{
    MYTYPE test = 99LU;
}

DIA SDK 和 DbgHelp 都返回 16 (SymTagBaseType) 为类型符号的 symtypetest。如果类型符号是 Typedef 符号,那就太好了(17/SymTagTypedef),但可能PDB本身并没有记录源文件是否使用了typedef或者在声明局部变量的类型时键入名称。

一种可能的解决方法是枚举SymTagTypedef全局范围符号的子代,构建一个std::multimap从类型的类型 ID 到typedef名称。然后,对于每个局部变量,如果多重映射包含数据符号类型 ID 的条目(通过IDiaSymbol::get_typeId http://msdn.microsoft.com/en-us/library/xks45awc.aspx), 使用IDiaSession::findLines http://msdn.microsoft.com/en-us/library/t7wkd78s.aspx方法找出声明数据符号的行并在这些行中搜索任何typedef名称字符串,可能在搜索之前执行预处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取我的 VC++ 代码使用的符号列表 的相关文章

  • 如何使用鼠标拖动和移动winform

    我知道如何通过添加以下代码来 拖动和移动 winform Protected Overrides Sub WndProc ByRef m As Message If m Msg 163 And ClientRectangle Contain
  • Visual Studio 2010 设计器运行时出错

    我正在使用 VS2010 如果我在设计器模式下打开一个表单并运行我的应用程序 设计器选项卡将不再显示表单设计器 而是会显示一个错误 并且只能通过重新启动 IDE 来修复 为了防止在加载设计器之前可能发生的数据丢失 必须解决以下错误 1 Er
  • 智能感知不显示评论

    如果我在 Visual Studio 2010 中输入类似的内容数据集1 我得到所有可用方法和属性的列表 智能感知 这很好用 但是 如果我在此列表中选择一个方法或属性 我不会得到 if 的描述 例如 如果我有类似的东西 public cla
  • 无法构建项目输出组内容文件

    目前 我正在尝试使用 Visual Studio 2010 为我们的 ASP net4 Silverlight Web 应用程序之一创建一个 WebSetup 项目 我根据创建了安装项目this http weblogs asp net s
  • 如何检查 lib 文件?

    我有一个包含 390 个库的列表 需要将软件从实验室 CVI 移植到 Visual C 这些依赖关系快要了我的命 我无法导入所有这些 这太过分了 而且并非所有它们都是唯一的和 或根本可以加载 有没有一种简单的方法可以确定 lib 文件进行哪
  • vscode 窗口没有响应[重复]

    这个问题在这里已经有答案了 VS代码版本 1 77 0 操作系统版本 windows 11 22h2 这是我过去几天收到的问题 我使用了nodejs 并且没有安装任何Python或其他软件 我已经删除了所有扩展并删除了缓存 在此输入图像描述
  • 在工作区中找不到文件

    我使用 Visual Studio 2010 professional 和 TFS 作为源代码控制 一切正常 早上我来打开我的解决方案 它以离线状态打开 我尝试上网 它说 Workspace for this solution could
  • 多个 Visual Studio 项目抱怨临时文件丢失,因此无法打开。错误代码 &H80070003

    我在终端服务器上运行 Visual Studio 2010 并且已经运行了一段时间 问题相对较少 今天早上 我启动了我的电脑 在英国的长周末期间 似乎出现了以下问题 我有很多项目 但不是我的所有项目 也不是给定解决方案中的所有项目 抱怨无法
  • C++11 / VS2010:返回不可复制但可移动对象的容器

    考虑以下代码 include
  • 从 VS.NET 2008 转换到 2010 时 Windows 服务安装项目出现问题

    我正在尝试将解决方案从 VS NET 2008 转换为 2010 该解决方案包括一个 Windows 服务项目和一个安装 Windows 服务的安装项目 我在编译安装项目时遇到问题 我已经尝试按照教程从头开始几次here http msdn
  • Subversion 和 Visual Studio 项目的最佳实践

    我最近开始在 Visual Studio 中处理各种 C 项目 作为大型系统计划的一部分 该系统将用于替换我们当前的系统 该系统是由用 C 和 Perl 编写的各种程序和脚本拼凑而成的 我现在正在进行的项目已经达到了颠覆的临界点 我想知道什
  • 有什么方法可以设置每个解决方案的颜色选项(VS2010)?

    有没有办法配置VS2010为不同的解决方案使用不同的配色方案 在 20 世纪 90 年代的 Macintosh 上 我可以将 wctb 资源添加到文档中 以便它们可以使用不同的配色方案打开 这样可以更轻松地找到要单击的正确窗口 并且还有助于
  • 目标中的 clr.dll 版本与构建的 mscordacwks.dll 版本不匹配

    我正在使用 NET Framework 4 0 开发 ASP NET MVC 3 应用程序 当我去调试我的应用程序时 我收到消息 无法附加到应用程序 webdev webserver 目标中的 clr dll 版本与构建 mcordacwk
  • 自定义Visual Studio的项目上下文菜单

    我正在使用带有一些加载项和扩展的 Visual Studio 2010 现在的问题是 解决方案资源管理器中项目项的上下文菜单变得如此之大 以至于我总是必须向下滚动才能找到我最常使用的 属性 和 在 Windows 资源管理器中打开 这变得非
  • 使用 SSD 加快编译时间

    我想尝试加快 C 项目的编译时间 他们有大约 300 万行代码 当然 我不需要总是编译每个项目 但有时有很多源文件被其他人修改过 我需要重新编译所有这些文件 例如 当有人更新一个项目时 ASN 1 https en wikipedia or
  • Visual Studio 有格式代码快捷方式吗?

    In Eclipse http en wikipedia org wiki Eclipse 28software 29 there is a shortcut Ctrl Shift F that re indents code and fi
  • 如何为动态创建的按钮创建 onClick 事件处理程序

    目前 我正在为学生宿舍做一个项目 现在我必须实现一些关于学生的搜索策略 这里 当用户单击 aspx 页面中的另一个服务器按钮时 我必须动态创建一个按钮 因此我必须创建新创建的按钮的 onclick 事件处理程序 我使用的代码片段是 prot
  • 相等运算符在 VS2010 中不起作用

    示例代码 std hash set
  • 在 VB 2010 中禁用“默认实例”

    我已经开始在 VB 2010 中做一些基本的 win 表单工作 我真的很烦恼默认实例 https stackoverflow com q 4698538 794234特征 有没有办法可以完全禁用它并像普通类一样使用这些类 向表单的构造函数添
  • 仅在调试版本中防止 NuGet 恢复包

    我在解决方案中启用了 恢复包 选项 因此当我将代码上传到 CI 服务器时 它会更新正确构建所需的所有包 并且效果很好 现在的问题是 在我的本地计算机上 构建需要很长时间才能启动 因为正在 更新软件包 有没有办法仅在发布版本中启用恢复包 我尝

随机推荐

  • 让 AutoMapper 自动映射前缀属性

    我希望 AutoMapper 自动映射成员 如下所示 class Model public int ModelId get set class ModelDto public int Id get set 在这里 我会做一个 CreateM
  • 通过 javascript 将 onsubmit 添加到表单

    您将如何仅通过 Javascript 将 OnSubmit 属性插入到表单中 我对 javascript 还很陌生 所以如果您能够提供详细的示例代码 那将是最有帮助的 情况是这样的 我通过 Chargify 支付平台 使用托管注册页面来处理
  • 如何使用KDTrees实现最近邻搜索?

    所以 我正在实施一个KD Tree http en wikipedia org wiki Kd tree进行最近邻搜索 我已经构建了树部分 但我认为我没有完全理解搜索部分 关于遍历树来搜索邻居 维基百科文章如下 Starting with
  • 如何为 Weblogic 10.3.6 启用 Java 持久性 2.0

    我正在使用 eclipse 和 weblogic 服务器 为了将项目添加到 weblogic 服务器 它需要支持 Java Persistance 2 0 但是当尝试安装它时 我不断收到此消息 在 Weblogic Server 安装中启用
  • C memcpy 二维数组

    我正在尝试使用将一个二维数组复制到另一个memcpy 我的代码 include
  • docker 中的 Capybara headless chrome 返回 DevToolsActivePort 文件不存在

    我正在尝试配置系统测试以使用硒中的无头铬 我有以下水豚配置 spec support capybara rb Capybara server puma Silent true RSpec configure do config config
  • 如何让背景覆盖一个单独的div?

    我正在做一个带有侧菜单的网站 屏幕的 30 是菜单 其余是内容 div的内容 我用COVER的方法放了一张背景图 我用了第一个例子 https css tricks com examples FullPageBackgroundImage
  • 如何使用 Xamarin 应用程序开发自动注销

    我必须在 App xaml cs 上添加功能才能使其正常工作 我在 OnStart 上添加了功能 但现在它会间歇性地一次又一次地将我从应用程序中注销 根据下面的代码 我需要做什么才能让它停止这样做 或者我的代码有问题 这是我最新的代码 na
  • 如何通过 CollectionView 中的流布局将单元格对齐到顶部

    在此代码中 我尝试更改 UICollectionView 的第一个单元格的大小以及具有相同大小的其他单元格的大小 但在第一行中 当我想要两个单元格出现时 只有一个单元格出现 func collectionView collectionVie
  • Chrome 开发工具中 $() 和 $(this) 显示的 x.fn.x.init[] 值是多少

    我有在一些开发工具中调试 JS 和 jQuery 脚本的习惯 我意识到 Chrome 开发工具将 x fn x init 显示为 和 this 的值 但是我不知道这些价值是什么 Code
  • Thinktecture Identity 服务器 v3 Google 提供商

    我在集成外部提供商 即 Google 与 Thinktecture 身份服务器 v3 时遇到问题 我收到以下错误 客户端应用程序未知或未授权 有人对这个错误有任何想法吗 Whoever 看起来客户端和服务器中的 RedirectUri 值不
  • 使用 jest 存根函数

    有没有办法使用 jest API 来存根函数 我习惯于使用 sinon 存根 在这里我可以使用存根为来自我的测试单元的任何函数调用编写单元测试 http sinonjs org releases v1 17 7 stubs http sin
  • SWI Prolog 使用的检查优化会发生什么情况?

    去引用SICStus Prolog 手册 https sicstus sics se sicstus docs 3 12 9 html sicstus Occur html 逻辑编程背后的通常数学理论禁止 创建循环项 规定发生检查应该是 每
  • Firefox 扩展中的 localStorage

    我正在尝试从 Firefox 扩展访问页面的 localStorage 我的理解是content给出了参考window当前页面的 当我尝试访问页面的 localStorage 时content localStorage 我想我正在得到它的参
  • webrtc - 视频出现斑点,但它仍然是黑色的

    我使用 chrome 21 运行我的 webrtc 代码 如果我在同一个 chrome 中打开两个选项卡 然后打开其中包含 webrtc 代码的页面 一个选项卡用于发送视频流 一个选项卡用于接收视频流 效果很好 但是 如果我使用两种隐身模式
  • 当数据源中只有 1 项时 FormView 不显示 PagerTemplate

    我有一个带有自定义 PagerTemplate 的 FormView 控件和我自己的分页 LinkBut ton 一切都很好 直到我加载的数据集仅包含一个记录 项目并完全隐藏 PagerTemplate 我在网上搜索了一下 找到了几个答案
  • 有没有办法只从 python 列表中输出数字?

    简单的问题 list 1 asdada 1 123131 131 blaa adaraerada 0 000001 34 12451235265 stackoverflow is awesome 我想创建一个list 2这样它只包含数字 l
  • AWS ALB 截断 HTTP 响应

    我有一个带有目标组的 ALB 和运行 PHP API 的 ECS 集群 我正在尝试查询 API 以获得 CSV 响应 但如果请求通过 ALB 我会得到被截断的结果 当我通过 SSH 连接到运行集群的 EC2 实例并尝试手动运行curl 通过
  • WP 用户注册 - 也可以立即选择他/她的密码

    这是一个非常简短的前端注册指南 但我在密码方面遇到了一个小问题 我禁用了用户注册时发送的带有密码生成的电子邮件 Don t Send Notification Email To Registered User if function exi
  • 获取我的 VC++ 代码使用的符号列表

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