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

news2025/1/18 9:51:59

一、背景

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

        在这样的背景下,我的日常工作中有时会出现存在某个分支的项目软件的某个功能出现了问题需要我去排查解决,而我当前并不在该分支上开发。于是只能安装出问题的包,然后使用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.coloradmin.cn/o/1432277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式linux移植篇之根文件系统(rootfs)

根文件系统首先是内核启动时所 mount(挂载)的第一个文件系统,系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。单独的 Linux 内核是没法正常工作的,必须要搭配根文件系统。 根文件系统的目录结构 根文…

【SpringBoot】RBAC权限控制

📝个页人主:五敷有你 🔥系列专栏:SpringBoot⛺️稳重求进,晒太阳 权限系统与RBAC模型 权限 为了解决用户和资源的操作关系, 让指定的用户,只能操作指定的资源。 权限功能 菜单权限&a…

自建服务器监控工具uptime kuma

web服务器使用 雨云 提供的2核2g 这里使用1panel的uptime kuma 首先,如果你使用雨云,那么可以直接省去安装1panel的烦恼 直接选择预装后,等待部署完成即可看到面板信息,进入面板,点击应用商店 在应用商店里找到upti…

视云闪播截图

视云闪播截图 1. 截图设置2. 热键设置3. 视频截取3.1. 保存 -> 完成 References 深度学习图像数据获取工具。 视云闪播 https://www.netposa.com/Service/Download.html 1. 截图设置 视云闪播 -> 系统设置 -> 截图设置 2. 热键设置 视云闪播 -> 系统设置 ->…

C# CAD界面-自定义工具栏(三)

运行环境 vs2022 c# cad2016 调试成功 一、引用 二、开发代码进行详细的说明 初始化与获取AutoCAD核心对象: Database db HostApplicationServices.WorkingDatabase;:这行代码获取当前工作中的AutoCAD数据库对象。在AutoCAD中,所有图形数…

【数据结构与算法】(6)基础数据结构之栈的链表实现、环形数组实现示例讲解

目录 2.5 栈1) 概述2) 链表实现3) 数组实现4) 应用习题E01. 有效的括号-Leetcode 20E02. 后缀表达式求值-Leetcode 120E03. 中缀表达式转后缀E04. 双栈模拟队列-Leetcode 232E05. 单队列模拟栈-Leetcode 225 2.5 栈 1) 概述 计算机科学中,stack 是一种线性的数据结…

【新手必看】一键搭建幻兽帕鲁服务器全程指南

玩转幻兽帕鲁服务器,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

(6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理

目录 一、为什么要使用Adaboost建模? 二、泰坦尼克号分析(工作环境) (插曲)Python可以引入任何图形及图形可视化工具 三、数据分析 四、模型建立 1、RandomForestRegressor预测年龄 2、LogisticRegression建模 引入GridSearchCV 引入RandomizedSearchCV 3、Deci…

用Python Tkinter打造的精彩连连看小游戏【附源码】

文章目录 连连看小游戏:用Python Tkinter打造的精彩游戏体验游戏简介技术背景MainWindow类:职责:方法:Point类: 主执行部分:完整代码:总结: 连连看小游戏:用Python Tkinter打造的精彩游戏体验 在丰富多彩的游戏世界中&#xff0c…

Python 数据分析(PYDA)第三版(一)

原文:wesmckinney.com/book/ 译者:飞龙 协议:CC BY-NC-SA 4.0 关于开放版本 第 3 版的《Python 数据分析》现在作为“开放获取”HTML 版本在此网站wesmckinney.com/book上提供,除了通常的印刷和电子书格式。该版本最初于 2022 年…

逆向基础-破解密码

1.通过study PE查看.exe程序的位数 打开 x32dbg 从暂停到运行程序 原理:软件算出的密码与用户输入的密码作比较 破解流程:查信息 --> 找内存关键数据 --> 测试

STM32--SPI通信协议(1)SPI基础知识总结

前言 I2C (Inter-Integrated Circuit)和SPI (Serial Peripheral Interface)是两种常见的串行通信协议,用于连接集成电路芯片之间的通信,选择I2C或SPI取决于具体的应用需求。如果需要较高的传输速度和简单的接口,可以选择SPI。如果需要连接多…

基于NSGA-II的深度迁移学习

深度迁移学习 迁移学习是一种机器学习技术,它允许一个预训练的模型被用作起点,在此基础上进行微调以适应新的任务或数据。其核心思想是利用从一个任务中学到的知识来帮助解决另一个相关的任务,即使这两个任务的数据分布不完全相同。这种方法…

幻兽帕鲁服务器搭建记录,小白成功分享

玩转幻兽帕鲁服务器,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

重磅发布!使用 LangGraph 创建一个超级AI Agent

几天前,LangChain 正式宣布了名为 LangGraph 的新库,LangGraph 建立在 LangChain 之上,简化了创建和管理Agent及其运行时的过程。 在这篇文章中,我们将全面介绍 langGraph,什么是代理和代理运行时?Langgra…

【数据结构】排序---C语言版

七大排序算法 一、对于排序的分类:二、插入排序1、直接插入排序(1)基本思想:(2)直接插入排序:(3)代码实现:(4)总结: 2、希…

Postgresql体系结构

client连接PostgreSQL过程: 1、客户端发起请求 2、主服务postmaster进程负责服务器是否接受客户端的host通信认证,服务器对客户端进行身份鉴别 3、主服务进程为该客户端单独fork一个客户端工作进程postgres 4、客户端与postgres进程建立通信连接&#xf…

【小白开服日记】幻兽帕鲁服务器如何搭建?

玩转幻兽帕鲁服务器,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

二分查找第二弹

目录 力扣852.山脉数组的峰顶索引 力扣162.寻找峰值 力扣153.寻找旋转排序数组中的最小值 力扣剑指Offer53.0-n-1缺失的数字 力扣852.山脉数组的峰顶索引 峰顶之前的全部比他小,峰顶之后的也比他小,把小于等于和大于分成两段 class Solution {publi…

java仓库进销存商品库存管理系统springboot+vue

库存管理信息系统研究的内容涉及库存管理的全过程,包括入库、出库、退 货、订货、库存统计查询等等。 根据上述工作流程,库存管理系统将包含以下内容 1)登录信息的输入,密码的修改。 2)基本信息的输入,包括…