这节聊聊如何使用VisualStudio进行断点调试。

在debug过程中,我们有时需要查看程序在运行到某一行代码时,上下文中的变量或者一些其他的数据是什么样的,我们就要设置断点(Breakpoint)。断点顾名思义,就是运行到打断点的这一行,程序就中断,暂停。下面就看看如何使用VisualStudio来断点调试C#代码。

如何断点:

在VS中,如何为代码设置断点呢,有这么两种形式:

第一个就是直接在想要断点的代码行,设置,断点位置如下图,鼠标点击代码行的最前头,出现红点即设置完成,对应的代码会出现红色背景(命中断点背景则是黄色)。

   

另一种方式就是将鼠标点击一下要断点的行,激活键入光标,再按F9即可。

(其实还有一种方式,没有什么具体的实用价值:在想断点的代码行右击鼠标弹出上下文菜单,选择插入断点即可。)

设置好断点后,就可以按F5或者点击启动即可开始调试代码,但注意启动模式要是Debug模式,Release是发布版本,不会命中断点。之所以我们能断点调试是因为在Debug模式下,代码在编译时会加入辅助元素,断点才会有效,发布版本在编译时不会加入这些辅助元素,所以断点是无效的。另外额外说明一点,如果已经调试完成,可以使用发布版本运行一次,发布版本因为是纯代码编译,运行性能要更好。

调试代码:

当运行到断点处时,程序会停下来,后续的代码都可以进行调试,调试分为逐语句和逐过程,逐语句就是一行一行的,遇到方法就跳转到方法内部,逐过程就是当遇到包含方法的代码不会进入方法内部。

命中断点后,将鼠标移动到变量上,就会弹出变量的当前值的窗口:

激活这个小窗口还可以更改变量的值。

如果要调试查看下一行代码,就可以按F10进行逐过程或者F11进行逐语句调试。

或者点击菜单栏中对应的按钮:

Continue是继续执行代码直到遇见下一个断点,后边的红色方框是停止程序运行,最后标记的三个不同方向的箭头则分别是逐语句,逐过程,和跳出正在执行的程序。

变量监视:

当命中断点后,vs窗口下方会自动启动几个窗口:

Autos可以自动显示断点处上下文中的变量及其值等信息。

Locals可以显示当前作用域中可以访问的所有变量信息。

Watch1可以自行添加要监视的变量,并且这个窗口可以添加多个。

    条件断点:

我们可以为断点添加条件,这尤其适用于循环块中,比如用for循环5次,我们可以让其在循环值为3的时候停止,添加条件断点的方式就是移动鼠标到断点红点上,点击小齿轮,在弹出的框中设置即可:

    断点操作:

我们可以设置在断点命中时执行向Output窗口输出自定义数据的操作:

在输入框中输入要输出的语句即可,用大括号包裹要输出的变量,下方可以选择命中时执行操作接着执行代码,也可以不选,不选就执行命中不继续执行了,这个看自己的需求。在输入框中输入要输出的语句即可,用大括号包裹要输出的变量,下方可以选择命中时执行操作接着执行代码,也可以不选,不选就执行命中不继续执行了,这个看自己的需求。

个人公众号,热爱分享,知识无价。

简单聊聊VisualStudio的断点调试的更多相关文章

  1. chrome developer tool—— 断点调试篇

    断点,调试器的功能之一,可以让程序中断在需要的地方,从而方便其分析.也可以在一次调试中设置断点,下一次只需让程序自动运行到设置断点位置,便可在上次设置断点的位置中断下来,极大的方便了操作,同时节省了时 ...

  2. 转载|chrome developer tool—— 断点调试篇

    断点,调试器的功能之一,可以让程序中断在需要的地方,从而方便其分析.也可以在一次调试中设置断点,下一次只需让程序自动运行到设置断点位置,便可在上次设置断点的位置中断下来,极大的方便了操作,同时节省了时 ...

  3. JavaScript调试技巧之断点调试

    首先,在各个浏览器中,断点调试支持的最好的当然是Firefox,Firefox不仅可以使用Firebug调试页面js脚本,还可以用高级调试工具例如JavaScript Debugger (Venkma ...

  4. VisualStudio 断点调试详解

    本文详细告诉大家 VisualStudio 断点调试的功能和使用方法,本文使用的是最新 VisualStudio2019 的功能,也许在你看到这篇博客的时候这个版本已经过时 本文将会按照从简单到复杂, ...

  5. 【Android学习笔记】Android Studio简单断点调试

    首先点击断点调试按钮运行App 启动之后,会弹出如下图的提示框,不要管,几秒之后这个弹框会自动消失,然后App会成功运行. 下面介绍一下断点调试的相关操作按钮对应的功能: 按钮1的功能:从当前断点跳到 ...

  6. 【转】说说如何使用unity Vs来进行断点调试

    大家可以从这下载最新版的unity vs. UnityVs1.81下载  1.   安装unity vs.首先我们打开我们下载的unity vs.然后就会看见里面有3个文件,我们双击UnityVS 2 ...

  7. 说说如何使用unity Vs来进行断点调试

    转载自:http://dong2008hong.blog.163.com/blog/static/4696882720140293549365/ 大家可以从这下载最新版的unity vs. Unity ...

  8. 2018-8-10-VisualStduio-打断点调试和不打断点调试有什么区别

    title author date CreateTime categories VisualStduio 打断点调试和不打断点调试有什么区别 lindexi 2018-08-10 19:16:52 + ...

  9. 【转】使用Fiddler进行HTTP断点调试。

    这是Fiddler又一强大和实用的工具之一.通过设置断点,Fiddler可以做到: 1. 修改HTTP请求头信息.例如修改请求头的UA, Cookie, Referer 信息,通过“伪造”相应信息达到 ...

随机推荐

  1. 史上超强拷贝仓——GitHub 热点速览 v.21.11

    作者:HelloGitHub-小鱼干 Clone-Wars 是真的强,能细数 70+ 知名应用网站的源码,即便你不看代码,也可以了解下各大网站的所用技术栈.同样很强的是用 OpenCV 实现的图片转 ...

  2. 从零学脚手架(八)---webpack-dev-server源码分析

    上一篇中介绍了webpack-dev-server属性配置 这一篇就简单的梳理下webpack-dev-server内部实现. 由于涉及到源码解析,所以会涉及到一些比较难啃的知识,我会尽量进行简单化描 ...

  3. Nacos 2.0 正式发布,性能提升 10 倍!!

    3月20号,Nacos 2.0.0 正式发布了! Nacos 简介: 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. 通俗点讲,Nacos 就是一把微服务双刃剑:注册中心 + 配置中 ...

  4. 写个小程序01 | 注册微信小程序

    出于兴趣和学习目的,我想自己做一个基于"子弹笔记(Bullet Journal)"的小程序.由于个人开发经验很有限,只在课程作业中写过 web 前端,所以也不知道多久能写出来(逃) ...

  5. [Kong 与 Konga 与 Postgres数据库] 之 Kuberneres 部署

    1.Kong的概述 Kong是一个clould-native.快速的.可扩展的.分布式的微服务抽象层(也称为API网关.API中间件或在某些情况下称为服务网格)框架.Kong作为开源项目在2015年推 ...

  6. Java学习笔记--文件IO

    简介 对于任何程序设计语言,输入和输出(Input\Output)都是系统非常核心的功能,程序运行需要数据,而数据的获取往往需要跟外部系统进行通信,外部系统可能是文件.数据库.其他程序.网络.IO设备 ...

  7. OO_Unit 3 JML规格化设计总结

    OO_Unit 3 JML规格化设计总结 JML语言概述(Level 0) 概念定义   JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言.JML ...

  8. 了解什么是redis的雪崩和穿透?redis崩溃之后会怎么样?系统该如何应对这种情况?如何处理redis的穿透?

    缓存雪崩发生的现象 缓存雪崩的事前事中事后的解决方案 事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃 事中:本地ehcache缓存 + hystrix限流&降级, ...

  9. 【Android实习】20场面试斩获大厂offer,我学会了什么

    前言 很高兴遇见你~ 先说一下笔者春招实习的情况:从三月初到四月半,经历了近20场面试,一共面试了五家企业,通过了腾讯.字节.蚂蚁.美团的面试,虎牙在一面之后拒了二面邀请. 金三银四,笔者不是在面试中 ...

  10. 使用Vue-TreeSelect组件的时候,用watch变量方式解决弹出编辑对话框界面无法触发更新的问题

    在前篇随笔<使用Vue-TreeSelect组件实现公司-部门-人员级联下拉列表的处理>中介绍了Vue-TreeSelect组件的使用,包括使用v-modal绑定值,normalizer ...