【译】使用 Visual Studio 调试外部源代码
您是否曾经需要调试并进入依赖于 NuGet 或 .NET 库的代码,而这些库并没有构建为您的解决方案的一部分? 现在,调试它们并不像调试作为解决方案一部分的项目那么容易。从 Visual Studio 2022 预览3开始,我们在解决方案资源管理器中添加了一个新的“External Sources,外部源代码”节点,这将使调试外部源文件变得更加容易。这个节点在调试时出现,它将显示托管模块的源代码,其中加载的符号包含 Source Link 或 Source Server 信息。您可以轻松地浏览这些源文件,并在需要时通过放置断点进行调试。
Visual Studio 2022 团队正在努力实现个人和团队生产力的承诺。调试外部源代码是诊断工具中的一项功能,这只是我们正在研究的令人兴奋的特性之一。
解决方案资源管理器中的外部源代码
该特性向 Solution Explorer 中添加了一个新的顶级节点,当您处于调试会话时,该节点就会出现,任何加载的带有 Source Server 信息的符号文件(.pdb)都将出现在该节点下。

您可以通过展开树项来浏览文件。然后,双击一个项目从 Source Server 下载文件,并在编辑器中打开它。如果将模块设置为自动加载符号,则节点将在整个调试会话中与模块源代码保持一致。

如果你正在使用具有多个外部库的应用程序,这些库的组件已经发布到Source Server,例如 Newtonsoft.Json、CsvHelper、xUnit.net 等。这个特性将让你更容易地浏览这些源代码,并在需要时调试它们。
设置要求
可以通过调试设置下的选项来管理符号加载和源代码下载。
按照下面的设置检查表,确保模块可以出现在解决方案资源管理器的“外部源代码”节点中。
1. Tools -> Options -> Debugging 的选项
Disable Just My Code:这将允许调试器尝试定位解决方案之外的代码符号。
2. Tools -> Options > Debugging -> Symbols 的选项
Enable Microsoft Symbol Server:这允许调试器尝试定位 Microsoft Symbol Server 上的符号
Enable NuGet.org Symbol Server:这允许调试器尝试在 NuGet.org Symbol Server 上定位符号
Enable Load All Modules:这允许调试器加载所有模块的符号。(注意,这些选项将加载所有可用的符号,你可以通过选择“ Load only specified modules,只加载指定的模块”和指定包含的模块来限制符号加载。)
3. 您可能还需要检查 Debug -> Windows -> Modules,以查看当前哪些模块加载到内存中,并在需要时手动加载任何模块。
4. 一旦双击“外部源代码”中的项目,可能会提示您从服务器下载源代码; 单击“接受”,您就可以在编辑器中查看该项目的源代码。

让我们知道你的想法!
这是为 Visual Studio 创建一流的外部源代码调试体验的第一步。我们很快也会为本地代码带来这种改变。我们非常感谢您花时间尝试我们的最新功能,我们希望您能提供反馈,感谢!
原文链接
https://devblogs.microsoft.com/visualstudio/debugging-external-sources-with-visual-studio/

【译】使用 Visual Studio 调试外部源代码的更多相关文章
- 在ASP.NET 5项目中使用和调试外部源代码包
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于在ASP.NET 5中,项目依赖都是通过"包"来引用,所以使用 ...
- 在 Visual Studio 调试器中指定符号 (.pdb) 和源文件
查找并指定符号文件和源文件:指定符号加载行为.使用符号和源服务器上:加载符号自动或在要求. 内容 查找符号 (.pdb) 文件 查找源文件 查找符号 (.pdb) 文件 说明 在之前的 Vis ...
- 【广州.NET社区推荐】【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性
原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...
- Visual Studio调试之断点进阶篇
Visual Studio调试之断点进阶篇 在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常.程序中 ...
- Visual Studio调试之断点基础篇
Visual Studio调试之断点基础篇 我曾经问过很多人,你一般是怎么调试你的程序的? F9, F5, F11, F…… 有很多书和文章都是介绍怎么使用Visual Studio编写WinForm ...
- 调试 - Visual Studio调试
Visual Studio - 调试 异常处理机制 windows预定义了一系列的异常错误码,每种程序异常都有一个对应的错误码,windows系统将这些类似键值对关系的数据存储在异常处理表中(称为SE ...
- Visual Studio调试之断点技巧篇
原文链接地址:http://blog.csdn.net/Donjuan/article/details/4618717 函数断点 在前面的文章Visual Studio调试之避免单步跟踪调试模式里面我 ...
- Visual Studio调试之符号文件
原文链接地址:http://www.cnblogs.com/killmyday/archive/2009/10/14/1582882.html 前面在不能设置断点的检查步骤和Visual Studio ...
- [转]Visual Studio调试之符号文件
http://www.cnblogs.com/killmyday/archive/2009/10/14/1582882.html 前面在不能设置断点的检查步骤和Visual Studio调试之断点进阶 ...
随机推荐
- [luogu2303]Longge的问题
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 ll n,ans; 5 ll phi(l ...
- .net core 3.1 WebAPi 使用 AutoMapper 9.0、10.0
AutoMapper 可以很方便完成数据对象之间的转换. Dto -> Entity Entity -> ViewModel Step 1:通过 NuGet 安装 AutoMapper 的 ...
- vue项目中使用canvas
canvas API 文档:https://www.canvasapi.cn/ 一.在html中使用canvas canvas 元素用于在网页上绘制图形. 在html中,使用 document.ge ...
- C/C++ Qt TabWidget 实现多窗体创建
在开发窗体应用时通常会伴随分页,ToolBar组件可以实现顶部工具栏菜单,每一个ToolBar组件关联到一个TabWidget组件的Tab标签内,这样我们就可以实现一个复杂的多窗体分页结构,此类结构也 ...
- zabbix忘记密码——进入数据库修改
登录数据库,选择zabbix数据库 查看数据库里面的表 用户和用户密码在users表里面 将你想设置的密码进行MD5加密处理: 更新密码即可: update users set passwd=&quo ...
- brew 切换源
切换到国内源 # 替换brew.git: $ cd "$(brew --repo)" # 中国科大: $ git remote set-url origin https://mir ...
- 关于java中的安全管理器
最近再查看java的源码的时候看见了这一类代码 final SecurityManager sm = System.getSecurityManager(); 想要了解这个是为了做什么,查看资料之后发 ...
- volatile原理和应用场景
volatile是java语言中的一个关键字,常用于并发编程,有两个重要的特点:具有可见性,java虚拟机实现会为其满足Happens before原则;不具备原子性.用法是修饰变量,如:volati ...
- Mapreduce中的join操作
一.背景 MapReduce提供了表连接操作其中包括Map端join.Reduce端join还有半连接,现在我们要讨论的是Map端join,Map端join是指数据到达map处理函数之前进行合并的,效 ...
- 强化学习实战 | 表格型Q-Learning玩井字棋(二)
在 强化学习实战 | 表格型Q-Learning玩井字棋(一)中,我们构建了以Game() 和 Agent() 类为基础的框架,本篇我们要让agent不断对弈,维护Q表格,提升棋力.那么我们先来盘算一 ...