使用_NT_SYMBOL_PATH在启动VS前设置PDB路径

一、背景

        由于公司相关项目的开发管理方式,导致公司会存在多个分支的版本正在开发/测试中。

        在这样的背景下,我的日常工作中有时会出现存在某个分支的项目软件的某个功能出现了问题需要我去排查解决,而我当前并不在该分支上开发。于是只能安装出问题的包,然后使用VS的附加进程去DEBUG调试出现问题的代码。在附加进程的时候,还需要设置PDB的路径,而且有可能要设置多个路径。

        但是,每次都要这样设置PDB的路径,是比较容易打断DEBUG的思路的。例如经常出现调试到某个地方,发现对应的更深层的模块还没有加载PDB,就要右键对应的模块,选择加载PDB,然后去构建机找到对应分支对应版本的目录选择模块的PDB路径。真的很麻烦!

        所以我想,能否在附加进程前,我就设置好PDB的路径?

        那么我把热门分支的每个版本的负责处理的相关模块的PDB目录都加进VS中,行不行?不行,先不说分支越来越多,每天都在构建新版本,我也加不过来,而且PDB路径过多也会导致后续VS搜索PDB的耗时过久。

        于是我就在网上找相关的资料,找到了_NT_SYMBOL_PATH这个环境变量刚好可以满足我的需求。

二、相关资料

Windows 调试器的符号路径 - Windows drivers | Microsoft Learn

Symbol / PDB files in the Visual Studio debugger | Microsoft Learn

三、处理方式

        我使用POWERSHELL编写了脚本,给脚本传入分支信息和版本信息后,脚本会通过这些信息将我所需要的PDB路径保存在_NT_SYMBOL_PATH中,然后,我再在POWERSHELL中启动VS即可。VS就会在寻找PDB文件时,使用_NT_SYMBOL_PATH指定的路径寻找,

        例如

$pdbPath = "E:/1"
$pdbPath += ";"
$pdbPath = "E:/2"
$pdbPath += ";"
$pdbPath = "E:/3"$env:_NT_SYMBOL_PATH = $pdbPath
&"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe" "E:/test.vcxproj"

        而且,这样子设置的_NT_SYMBOL_PATH只会对使用这个POWERSHELL窗口启动的VS生效,不会影响其它方式启动的VS窗口。所以,我也无需担心影响到其它VS搜索PDB时的效率。

三、最终结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/452638.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI重构千行百业!超声波俱乐部大湾区内部分享会圆满落幕

1月27日、28日,超声波俱乐部内部分享会第十六期、第十七期分别在深圳、广州召开,创梦天地、元气森林、新浪智库、百准、A2空间对活动进行了特别支持,六十余名AI领域的创始人和行业嘉宾出席分享会。 出席活动的嘉宾有: 超声波创始…

Kubernetes operator(五)api 和 apimachinery 篇

云原生学习路线导航页(持续更新中) 本文是 Kubernetes operator学习 系列第五篇,主要对 k8s.io/api 和 k8s.io/apimachinery 两个项目 进行学习基于 kubernetes v1.24.0 代码分析Kubernetes operator学习系列 快捷链接 Kubernetes operator&a…

C++进阶(十)哈希的应用——位图布隆过滤器

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、位图1、位图概念2、位图的实现3、位图的应用 二、布隆过滤器1、布隆过滤器提出2、布隆过滤…

通过html2canvas和jsPDF将网页内容导出成pdf

jsPDF参考:https://github.com/parallax/jsPDF html2canvas参考:https://github.com/niklasvh/html2canvas 或者 https://html2canvas.hertzen.com 思路 使用html2canvas将选中DOM生成截图对象将截图对象借助jsPDF导出为PDF文件 代码 这是一个示例&a…

List的模拟实现 迭代器

———————————————————— list与vector相比,插入、删除等操作实现的成本非常低,如果在C语言阶段熟悉理解过链表,那么现在实现起来list就显得比较简单,可以说操作层面上比vector更简洁,因为list没有扩…

【JavaEE进阶】 图书管理系统开发日记——伍

文章目录 🎋前言🌲需求分析🎄约定前后端交互接口🌳实现服务器代码🚩控制层🚩业务层🚩数据层 🍃修改前端代码⭕总结 🎋前言 这次我们来实现图书管理系统的增加图书模块。…

一文学会yum源配置(联网/未联网)以及yum常用命令

1、yum源介绍 yum(Yellow dog Updater Modified的简称),yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾…

超维机器人年终总结大事记回顾

2023年,对于超维机器人来说,是充满挑战和机遇的一年。在这一年里,我们攻坚克难,持续创新,深度聚焦智能巡检机器人的发展,加强合作伙伴关系,不断优化产品和服务,不断提升客户体验&…

华为配置接口二三层切换示例

配置接口二三层切换示例 组网图形 图1 配置非自协商模式下速率和双工模式组网图 二三层切换简介配置注意事项组网需求配置思路操作步骤配置文件 二三层切换简介 基于接口板的硬件构造,某些形态设备上接口只能作为二层以太网接口,某些形态设备上接口…

Java锁原理剖析

1.AQS——锁的底层支持 AbstractQueuedSynchronizer抽象同步队列简称AQS,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现的。 如图所示,AQS是一个FIFO的双向队列,其内部通过节点head和tail记录队首和队尾元素,队列元…

ANN(MLP) 三种预测

目录 介绍: 一、Mlp for binary classification 数据: 模型: 预测: 二、Mlp for Multiclass Classification 数据: 模型: 预测: 三、MLP for Regression 数据: 模型&a…

山西电力市场日前价格预测【2024-02-04】

日前价格预测 预测说明: 如上图所示,预测明日(2024-02-04)山西电力市场全天平均日前电价为367.56元/MWh。其中,最高日前电价为441.08元/MWh,预计出现在18:30。最低日前电价为324.52元/MWh,预计…