在Visual Studio 2017中可以通过符号以及源链接,非常方便对 ASP.NET Core 2.0中源代码进行调试。在这篇文章中,我们将重点介绍如何使用源链接对ASP.NET Core源进行调试。

什么是源链接?

和我一样,您可能已经注意到在编译代码时,会创建的PDB文件。这些文件保存了符号信息,这些信息可以选择用于支持对外部源代码的调试。某些类型的符号文件可能包含一些源代码或源代码的映射。

很长一段时间以前,Microsoft已经托管了符号服务器,它们保存Microsoft产品(如.NET Framework和ASP.NET Core)已发布的符号文件。Visual Studio支持动态下载符号。为此,您必须禁用“调试” -> “常规”选项中的“启用仅我的代码”选项。默认情况下,此选项在Visual Studio中是启用的。

有关符号、符号服务器等的更多信息,请参阅此MSDN链接

源链接允许您在符号文件中嵌入被调用方法的名称和位置清单,它可以识别包含代码的文件以及可以从哪里检索文件。ASP.NET Core(不是.NET Core)现在支持源链接,并提供到GitHub上托管代码的链接。

启用和使用源链接

首先的要求是将Visual Studio 2017更新到最新的版本(15.3),该更新添加了源链接的支持。如果安装此项,在“调试” -> “常规”选项中,您将看到“启用源链接支持”。

除了确保“启用仅我的代码”禁用外,您还必须启用Microsoft符号服务器,在“调试” -> “符号”选项中,可以从符号文件位置列表中启用“Microsoft符号服务器”。

启用符号服务器时,您需要接受调试时可能引入的性能影响。

设置完成后,准备调试ASP.NET Core源代码。为了测试这个,我在Visual Studio中创建了一个默认的ASP.NET Core 2.0 MVC项目。然后我在HomeController上为Index方法添加了一个断点。然后开始调试应用程序。第一次调试时,您可能会看到这样的消息。

这是正在下载的符号文件,可能需要一段时间才能完成。

一旦应用程序运行到您代码断点处,您就可以导航到调用堆栈,以看到正在执行的所有外部ASP.NET代码。

如果您双击任何这些调用,编辑器将使用符号来确定该代码所在的框架位置。使用符号文件中的链接,Visual Studio将从GitHub下载源文件。当源链接需要下载源代码时,您会看到如下警告对话框:

您可以选择第一项“下载源并继续调试”选项,并继续使用该文件进行调试。您可以选择第二个选项,将下载该文件,并禁用下次文件下载的警告。

下载完源文件后,它将显示在您选择堆栈对应的位置。

您还可以在该文件中的其它位置添加自己的断点,然后在调试应用程序时将其设置为命中。即使我们停止调试并重新启动,这似乎仍然是有效的。

总结

Very nice ,在ASP.NET Core中调试外部源码非常容易。通过这个功能可以获得更多的价值,让我们可以调试ASP.NET Core源代码,了解内部工作方式。

参考资料:

作者:Sweet Tang
本文地址:http://www.cnblogs.com/tdfblog/p/debugging-asp-net-core-2-source.html
欢迎转载,请在明显位置给出出处及链接。

调试 ASP.NET Core 2.0 源代码的更多相关文章

  1. ASP.NET Core 2.0 源代码

    ASP.NET Core 2.0 源代码 在Visual Studio 2017中可以通过符号以及源链接,非常方便对 ASP.NET Core 2.0中源代码进行调试.在这篇文章中,我们将重点介绍如何 ...

  2. 使用VS Code开发调试ASP.NET Core 1.0

    使用VS Code开发调试ASP.NET Core 1.0,微软在今天凌晨发布了.NET Core 1.0,ASP.NET Core 1.0 与 Entity Framewok 1.0. 之前跟大家讲 ...

  3. VS Code开发调试ASP.NET Core 1.0

    VS Code开发调试ASP.NET Core 1.0 使用VS Code开发调试ASP.NET Core 1.0,微软在今天凌晨发布了.NET Core 1.0,ASP.NET Core 1.0 与 ...

  4. [译]Debug ASP.NET Core 2.0源代码

    原文 首先你的VS必须为VS 2017 15.3或以上版本. 打开你的Startup类,在ConfigureServices方法上设置个断点,按F5 Debug应用. 在Call Stack(调用堆栈 ...

  5. ASP.NET Core 1.0 开发记录

    官方资料: https://github.com/dotnet/core https://docs.microsoft.com/en-us/aspnet/core https://docs.micro ...

  6. .NET跨平台之旅:将示例站点从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0

    终于将“.NET跨平台之旅”的示例站点 about.cnblogs.com 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 ,经历了不少周折,在这篇博文中记录一下. 从 AS ...

  7. ASP.NET Core 1.0 静态文件、路由、自定义中间件、身份验证简介

    概述 ASP.NET Core 1.0是ASP.NET的一个重要的重新设计. 例如,在ASP.NET Core中,使用Middleware编写请求管道. ASP.NET Core中间件对HttpCon ...

  8. ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  9. 在 Mac OS 上创建并运行 ASP.NET Core 1.0 网站

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

随机推荐

  1. 如何利用百度orc实现验证码自动识别

    在爬取网站的时候都遇到过验证码,那么我们有什么方法让程序自动的识别验证码呢?其实网上已有很多打码平台,但是这些都是需要money.但对于仅仅爬取点数据而接入打码平台实属浪费.所以百度免费orc正好可以 ...

  2. Selenium 学习笔记(一)

    selenium 学习整理 初学者,如果有不当得地方请指出,非常感谢. 准备事项: 1. Python 安装包 安装Python,并勾选添加环境变量. 安装完成后,打开dos窗口,输入python,看 ...

  3. 推荐一款接口文档在线管理系统-MinDoc

    项目简介 MinDoc 是一款针对IT团队开发的简单好用的文档管理系统. MinDoc 的前身是 SmartWiki 文档系统.SmartWiki 是基于 PHP 框架 laravel 开发的一款文档 ...

  4. HTML5新增属性data-*和js/jquery之间的交互

    HTML5新增属性data- data-自定义属性,这种方式的自定义属性解决属性混乱无状态管理的现状 书写实例 <div data-role="page" data-last ...

  5. C#格式符

    在输出字符串时,使用格式说明  使字符串显示适当的格式,比如:货币格式,或者科学计数法.百分比等. 以下是格式化的数字字符串  格式. {index, alignment: format} 例如: ; ...

  6. if判断与比较操作符gt、lt、eq等的使用

    在整数中比较使用如下  //-eq 等于(equal) if [ "$a" -eq "$b" ] //-ne不等于(no equal) if [ "$ ...

  7. URL.createObjectURL() 与 URL.revokeObjectURL()

    .URL.createObjectURL URL.createObjectURL()方法会根据传入的参数创建一个指向该参数对象的URL. 这个URL的生命仅存在于它被创建的这个文档里. 新的对象URL ...

  8. mysql初学,mysql修改,mysql查找,mysql删除,mysql基本命令

    Mysql 下载地址https://dev.mysql.com/downloads/mysql/ 1.连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYS ...

  9. [转载]在instagram上面如何利用电脑来上传图片

    原文地址:在instagram上面如何利用电脑来上传图片作者:小北的梦呓 我们都知道instagram是一个手机版的app,instagram官方不支持通过电脑来上传图片,而利用手机又很麻烦,那么如果 ...

  10. MPLS VPN随堂笔记1

    MPLS VPN 基础 1.MPLS vpn架构的特点 1.1.允许不同CE传递相同私网路由 1.2.SP内部(所有P路由器)不需要学习CE路由 1.3.无安全保障但有带宽保障(跟SP租用服务) 2. ...