您是否曾经需要调试并进入依赖于 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 调试外部源代码的更多相关文章

  1. 在ASP.NET 5项目中使用和调试外部源代码包

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于在ASP.NET 5中,项目依赖都是通过"包"来引用,所以使用 ...

  2. 在 Visual Studio 调试器中指定符号 (.pdb) 和源文件

    查找并指定符号文件和源文件:指定符号加载行为.使用符号和源服务器上:加载符号自动或在要求.   内容 查找符号 (.pdb) 文件 查找源文件   查找符号 (.pdb) 文件 说明 在之前的 Vis ...

  3. 【广州.NET社区推荐】【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性

    原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...

  4. Visual Studio调试之断点进阶篇

    Visual Studio调试之断点进阶篇 在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常.程序中 ...

  5. Visual Studio调试之断点基础篇

    Visual Studio调试之断点基础篇 我曾经问过很多人,你一般是怎么调试你的程序的? F9, F5, F11, F…… 有很多书和文章都是介绍怎么使用Visual Studio编写WinForm ...

  6. 调试 - Visual Studio调试

    Visual Studio - 调试 异常处理机制 windows预定义了一系列的异常错误码,每种程序异常都有一个对应的错误码,windows系统将这些类似键值对关系的数据存储在异常处理表中(称为SE ...

  7. Visual Studio调试之断点技巧篇

    原文链接地址:http://blog.csdn.net/Donjuan/article/details/4618717 函数断点 在前面的文章Visual Studio调试之避免单步跟踪调试模式里面我 ...

  8. Visual Studio调试之符号文件

    原文链接地址:http://www.cnblogs.com/killmyday/archive/2009/10/14/1582882.html 前面在不能设置断点的检查步骤和Visual Studio ...

  9. [转]Visual Studio调试之符号文件

    http://www.cnblogs.com/killmyday/archive/2009/10/14/1582882.html 前面在不能设置断点的检查步骤和Visual Studio调试之断点进阶 ...

随机推荐

  1. 应用SpringAOP及Tlog工具完成日志链路追踪、收集、持久化

    一.痛点 目前我司各系统的日志管理比较原始,使用logback打日志到log文件,虽然有服务管理平台,但记录的日志也仅仅是前置机调用后台系统的出入参,当遇到问题时查日志较为麻烦. 登录VPN-打开服务 ...

  2. vue闪现问题,出现{{xxx}}解决方法

  3. CF1578J Just Kingdom

    考虑一个点被填满则他需要从其父亲得到\(q_u = \sum_{v = u\ or\ v \in son_u}m_v\) 那么考虑如何这样操作. 我当时world final做的时候,是从上往下遍历, ...

  4. [SDOI2012] Longge 的问题

    题意 求\(\sum_{i}^{n} gcd(i,n)\) 想法 套路题 \(\sum_{i}^{n} gcd(i,n)\) \(=\) \(\sum_{i,i | n} i * phi(n/i)\) ...

  5. 【豆科基因组】绿豆Mungbean, Vigna radiata苏绿基因组预印

    目录 一.来源 二.结果 测序组装 组装评价 编码基因预测 基因功能注释 非编码RNA注释 假基因预测 重复序列注释 进化分析和分歧时间估计 全基因组复制 LTR插入时间估计 正选择基因 一.来源 H ...

  6. R语言与医学统计图形【4】直方图、金字塔图

    R语言基础绘图系统 基础图形--直方图.金字塔图 3.直方图 参数设置及比较. op <- par(mfrow=c(2,3)) data <- rnorm(100,10,5) hist(d ...

  7. Redis—怎么查看Linux有没有安装Redis,如何启动Redis

    1.检测是否有安装redis-cli和redis-server [root@localhost bin]# whereis redis-cli redis-cli: /usr/bin/redis-cl ...

  8. 在WEB网页上模拟人的操作(批量操作)

    思路:selenium IDE网页测试工具+firefox浏览器=>录制网页操作脚本->导出为Perl/python/Ruby/C/R等语言 参考: (1)selenium IDE网页测试 ...

  9. vector去重--unique

    具体实现见中间源码 function template <algorithm> std::unique equality (1) template <class ForwardIte ...

  10. 数据库时间和 java 时间不一致解决方案

    java添加 date 到数据库,时间不一致 使用 date 添加到数据库,数据库显示的时候和date时间相差 8 个小时,这是由于 mysql 上的时区的问题,这里有两个解决方案: 方案一: 设置数 ...