一、前言

  • 为什么要调试代码?
    通过调试可以让我们了解代码运行过程中的代码执行信息,比如变量的值等等。
    通常调试代码是为了方便我们发现代码中的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 列断点:在当前光标的下一行增加一个断点


本文由 ken.io 创作,采用CC BY 3.0 CN协议 进行许可。 可自由转载、引用、甚至修改,但需署名作者且注明出处。

.NET Core快速入门教程 5、使用VS Code进行C#代码调试的技巧的更多相关文章

  1. .NET Core 快速入门教程

    .NET Core 快速学习.入门系列教程.这个入门系列教程主要跟大家聊聊.NET Core的前世今生,以及Windows.Linux(CentOS.Ubuntu)基础开发环境的搭建.第一个.NET ...

  2. .NET Core快速入门教程 2、我的第一个.NET Core App(Windows篇)

    一.前言 本篇开发环境?1.操作系统: Windows 10 X642.SDK: .NET Core 2.0 Preview 二.安装 .NET Core SDK 1.下载 .NET Core下载地址 ...

  3. .NET Core快速入门教程 4、使用VS Code开发.NET Core控制台应用程序

    一.前言 为什么选择VS Code?VS Code 是一款跨平台的代码编辑器,想想他的哥哥VS,并是微软出品的宇宙第一IDE,那作为VS的弟弟,VS Code 也不会差,毕竟微软出品.反正ken是这么 ...

  4. .NET Core快速入门教程 3、我的第一个.NET Core App (CentOS篇)

    一.前言 本篇开发环境?1.操作系统:CentOS7(因为ken比较偏爱CentOS7)2.SDK版本:.NET Core 2.0 Preview 你可能需要的前置知识1.了解如何通过Hyper-V安 ...

  5. .NET Core快速入门教程 4、使用VS Code进行C#代码调试的技巧

    一.前言 什么是代码调试? 通过调试可以让我们了解代码运行过程中的代码执行信息,比如变量的值等等.通常调试代码是为了方便我们发现代码中的bug. 本篇开发环境 1.操作系统: Windows 10 X ...

  6. .NET Core快速入门教程 3、使用VS Code开发.NET Core控制台应用程序

    一.前言 本篇开发环境 1.操作系统: Windows 10 X642.SDK: .NET Core 2.0 Preview3.VS Code:1.14 二.安装&配置 1.VS Code下载 ...

  7. .NET Core快速入门教程 1、开篇:说说.NET Core的那些事儿

    一..NET Core的诞生 聊 .NET Core,就不得不说他的爸爸 .NET.当年Java刚刚兴起,如火如荼,微软也非常推崇Java,当时Windows平台的Java虚拟机就是微软按照JVM标准 ...

  8. 【C#】WixToolset快速入门教程

    原文:[C#]WixToolset快速入门教程 介绍 给windows系统做软件,常见的打包工具大家可能都听说过,如:大名鼎鼎的Installshield.Inno setup等.在遇见Wix之前In ...

  9. 专为设计师而写的GitHub快速入门教程

    专为设计师而写的GitHub快速入门教程 来源: 伯乐在线 作者:Kevin Li     原文出处: Kevin Li 在互联网行业工作的想必都多多少少听说过GitHub的大名,除了是最大的开源项目 ...

随机推荐

  1. 一句python,一句R︱模块导入与查看、数据读写出入、数据查看函数、数据类型、遍历文件

    先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas中有类似R中的read.table的功能,而 ...

  2. org.hibernate.MappingException

    1.错误描述 org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'sessio ...

  3. RHEL部署ipa红帽身份验证

    1.先下载必须包 yum install -y ipa-server bind bind-dyndb-ldap 2.初始化ipa基本配置 ipa-server-install * Configure ...

  4. Excle巧取汉字打头的字串内容

    处理表格数据时遇到问题:从网页表格中复制来的数据,地址一列中出现类似于“4AWZCX万载老林业局2”的无用字符前缀.现在希望提取第一个汉字及其之后的所有内容(图1),寻求高效分离中英文及数字的实操方法 ...

  5. 经典面试问题: Top K 之 ---- 海量数据找出现次数最多或,不重复的。

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  6. AJAX的简洁写法

    // ajax操作 $('#btn').on('click',function(){ var url = "{:url('confirm')}"; var actual_money ...

  7. 纯CSS实现二级导航下拉菜单--css的简单应用

    思想:使用css的display属性控制二级下拉菜单的显示与否.当鼠标移动到一级导航菜单的li标签时,显示二级导航菜单的ul标签.由于实现起来比较简单,所以在这里直接给出了参考代码. 1.纯CSS二级 ...

  8. [Luogu4074][WC2013]糖果公园

    BZOJ权限题!提供洛谷链接 sol 树上带修改莫队 很显然吧.对吧. 所以说树上莫队要怎么写呢? 我们知道莫队=给区间排序+依次暴力处理,所以对于树上莫队而言也是一样的. 序列莫队基于序列分块(也就 ...

  9. 微信小程序之换肤的功能

    pc或者移动端实现换肤功能还是比较简单的,大致就是需要换肤的css,还有正常的css:把当前皮肤类型存入本地:然后通过js读取并判断当前应该加载哪套css. 由于微信小程序没有操作wxss的api,所 ...

  10. body里面的onload和window.onload的区别

    区别:body里面的onload是在“页面加载完成后执行的动作” window里面的onload是在“页面加载时执行的动作” 例子:在html页面中有一个大图片,想要在图片显示出来后提示一个消息框“图 ...