.NET Core快速入门教程 5、使用VS Code进行C#代码调试的技巧
一、前言
为什么要调试代码?
通过调试可以让我们了解代码运行过程中的代码执行信息,比如变量的值等等。
通常调试代码是为了方便我们发现代码中的bug。ken.io觉得熟练代码调试技巧是成为合格程序员的基本要求。本篇开发环境
1、操作系统: Windows 10 X64
2、SDK: .NET Core 2.0 Preview
3、IDE:VS Code 1.14
二、调试技巧
- 设置断点
在代码编辑区域,点击左侧代码行行号的左边,即可在该行设置断点

- 启动调试
使用菜单:调试->启动调试,或者使用快捷键F5启动调试

启动调试后,程序启动,并会停留在第一个断点这一行。且这行的代码并未执行。
VS Code会自动唤出Debug工作区,本文将逐步介绍常用功能。
- Debug工作区介绍
1、顶部Debug工具栏
| 按钮&快捷键 | 说明(ken.io的翻译) |
|---|---|
| 绿色向右箭头(F5) | 继续执行程序,如果遇到断点则会停留到该断点 |
| 蓝色向右箭头(F10) | 单步跳过:执行一条语句,但是遇到方法调用时不进入,直到方法执行完成后直接继续。 |
| 蓝色向下箭头(F11) | 单步调试:执行一条语句,遇到方法调用时会进入方法进行调试 |
| 蓝色向上箭头(Shift+F11) | 单步跳出:执行当前当前方法并到下一步骤,如果当前方法有断点则会到下一个断点 |
| 绿色环形箭头(Ctrl+Shift+F5) | 重新启动调试 |
| 红色方块(Shift+F5) | 停止调试 |
2、变量区域
管理当前方法已经声明的变量信息

3、监视
可以添加要监视的表达式,比如i*2+5

如果i的值发生变化,将会实时计算结果
4、调用堆栈
显示当前调试的堆栈信息

| 项 | 说明(ken.io的翻译) |
|---|---|
| heelodotnet.dll | 调用的动态链接库 |
| hellodotnet | 命名空间 |
| Program.Main(string[] args) | 调用的类&方法 |
| Line | 当前调用方法的行号 |
如果有多个调用的链接库可以鼠标单击切换。查看变量等信息
5、断点
管理断点

- 调试过程中修改变量
选中要修改的标量,鼠标右键->设置值(快捷键F2也可以)

设置值:

回车键保存,然后F10进行单步跳过

本来i=0,randomNum=28,如果继续执行result=false,将无法执行if语句块。
修改后randomNum=0,执行后result=true,让本来会被跳过的if语句块可以被调试。
三、VS Code调试 .NET Core快捷键总结
| 快捷键 | 说明(ken.io的翻译) |
|---|---|
| 快捷键:F5 | 继续执行程序,如果遇到断点则会停留到该断点 |
| 快捷键:F10 | 单步跳过:执行一条语句,但是遇到方法调用时不进入,直到方法执行完成后直接继续。 |
| 快捷键:F11 | 单步调试:执行一条语句,遇到方法调用时会进入方法进行调试 |
| 快捷键:Shift+F11 | 单步跳出:执行当前当前方法并到下一步骤,如果当前方法有断点则会到下一个断点 |
| 快捷键:Ctrl+Shift+F5 | 重新启动调试 |
| 快捷键:Shift+F5 | 停止调试 |
| 快捷键:F9 | 切换断点:跳到下一个断点 |
| 快捷键:Shift+F9 | 列断点:在当前光标的下一行增加一个断点 |
- 系列名称:.NET Core 快速入门教程
- 上一篇:.NET Core快速入门教程 4、使用VS Code开发.NET Core控制台应用程序
- 下一篇:暂无下一篇,敬请期待!
- 本篇首次发布:2017-08-01
- 本篇原文链接:https://ken.io/note/dotnet-core-qucikstart-debug-vscode-skill
本文由 ken.io 创作,采用CC BY 3.0 CN协议 进行许可。 可自由转载、引用、甚至修改,但需署名作者且注明出处。
.NET Core快速入门教程 5、使用VS Code进行C#代码调试的技巧的更多相关文章
- .NET Core 快速入门教程
.NET Core 快速学习.入门系列教程.这个入门系列教程主要跟大家聊聊.NET Core的前世今生,以及Windows.Linux(CentOS.Ubuntu)基础开发环境的搭建.第一个.NET ...
- .NET Core快速入门教程 2、我的第一个.NET Core App(Windows篇)
一.前言 本篇开发环境?1.操作系统: Windows 10 X642.SDK: .NET Core 2.0 Preview 二.安装 .NET Core SDK 1.下载 .NET Core下载地址 ...
- .NET Core快速入门教程 4、使用VS Code开发.NET Core控制台应用程序
一.前言 为什么选择VS Code?VS Code 是一款跨平台的代码编辑器,想想他的哥哥VS,并是微软出品的宇宙第一IDE,那作为VS的弟弟,VS Code 也不会差,毕竟微软出品.反正ken是这么 ...
- .NET Core快速入门教程 3、我的第一个.NET Core App (CentOS篇)
一.前言 本篇开发环境?1.操作系统:CentOS7(因为ken比较偏爱CentOS7)2.SDK版本:.NET Core 2.0 Preview 你可能需要的前置知识1.了解如何通过Hyper-V安 ...
- .NET Core快速入门教程 4、使用VS Code进行C#代码调试的技巧
一.前言 什么是代码调试? 通过调试可以让我们了解代码运行过程中的代码执行信息,比如变量的值等等.通常调试代码是为了方便我们发现代码中的bug. 本篇开发环境 1.操作系统: Windows 10 X ...
- .NET Core快速入门教程 3、使用VS Code开发.NET Core控制台应用程序
一.前言 本篇开发环境 1.操作系统: Windows 10 X642.SDK: .NET Core 2.0 Preview3.VS Code:1.14 二.安装&配置 1.VS Code下载 ...
- .NET Core快速入门教程 1、开篇:说说.NET Core的那些事儿
一..NET Core的诞生 聊 .NET Core,就不得不说他的爸爸 .NET.当年Java刚刚兴起,如火如荼,微软也非常推崇Java,当时Windows平台的Java虚拟机就是微软按照JVM标准 ...
- 【C#】WixToolset快速入门教程
原文:[C#]WixToolset快速入门教程 介绍 给windows系统做软件,常见的打包工具大家可能都听说过,如:大名鼎鼎的Installshield.Inno setup等.在遇见Wix之前In ...
- 专为设计师而写的GitHub快速入门教程
专为设计师而写的GitHub快速入门教程 来源: 伯乐在线 作者:Kevin Li 原文出处: Kevin Li 在互联网行业工作的想必都多多少少听说过GitHub的大名,除了是最大的开源项目 ...
随机推荐
- NLP︱词向量经验总结(功能作用、高维可视化、R语言实现、大规模语料、延伸拓展)
R语言由于效率问题,实现自然语言处理的分析会受到一定的影响,如何提高效率以及提升词向量的精度是在当前软件环境下,比较需要解决的问题. 笔者认为还存在的问题有: 1.如何在R语言环境下,大规模语料提高运 ...
- 奶瓶beini系统
奶瓶(beini)这个系统,是一款基于 Tiny Core Linux 搭建的无线网络安全测试系统,当然由于它是用来安全测试的系统,因此在安全方面自然有着强大的功能.而且,这个系统非常简便易学,因此现 ...
- List转换成JSON对象报错(一)
List转换成JSON对象 1.具体报错如下 Exception in thread "main" java.lang.NoClassDefFoundError: org/apac ...
- 芝麻HTTP:在阿里云上测试Gerapy教程
1.配置环境 阿里云的版本是2.7.5,所以用pyenv新安装了一个3.6.4的环境,安装后使用pyenv global 3.6.4即可使用3.6.4的环境,我个人比较喜欢这样,切换自如,互不影响. ...
- 芝麻HTTP:Python爬虫进阶之Scrapy框架安装配置
初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...
- 不为人知的scanf
这是一篇为老谭洗白的文章 前几天,我见有人在群里说,谭浩强那本书不咋样,还不少错误.我就看了看他发出来的错误 #include<stdio.h> int main(){ int a,b; ...
- Metrics.net + influxdb + grafana 构建WebAPI的自动化监控和预警
前言 这次主要分享通过Metrics.net + influxdb + grafana 构建WebAPI的自动化监控和预警方案.通过执行耗时,定位哪些接口拖累了服务的性能:通过请求频次,设置适当的限流 ...
- Struts2【OGNL、valueStack】就是这么简单
什么是OGNL表达式? OGNL是Object Graphic Navigation Language 是操作对象属性的开源表达式. Struts2框架使用OGNL作为默认的表达式语言. 为什么我们学 ...
- javascript学习记录-2-18
对象定义的几种方法: var person=new Object(); person.name="111"; person.age=22; 或 var person={ na ...
- NOIWC2018游记
NOIWC2018游记 接着PKUWC就是NOIWC了.感觉时间很紧呀,但越是紧张呢,就越让人心里觉得充实. 能够去NOIWC,应该是一次非常充实的体验吧. 这一篇游记是接着上一篇写的,时间点上完全都 ...