C#---第十八课:Debug调试技巧--Debug类、pin 、add watch、拖动断点、修改变量、两个断点的联动

news2025/1/13 7:55:01

文章目录

    • 1. 在output窗口中输出变量的内容----Debug类
    • 2. Pin变量 / add watch 实时监控变量的变化
      • (1) pin to sources
      • (2) add watch
    • 3. 自由拖动黄色箭头图标
    • 4. 直接修改变量的值
    • 5. 两个断点的联动(当一个断点触发,另一个断点才会触发debug)



1. 在output窗口中输出变量的内容----Debug类

Microsoft Doc ----Debug 类


public static void WriteLineIf(bool condition, string? message);
// 1. 第一个传递参数传递的是条件
// 2. 第二个传递的是任意数据类型

using System.Diagnostics;

class Test
{
    static void Main()
    {
        int index = 2;
        Debug.WriteLine("Step1: Entering Main");
        Debug.WriteLineIf(index==1, "This is a successed test case.");
        Debug.WriteLineIf(index!=1, "This is a failed test case.");
        Debug.WriteLineIf(index!=1, 123456);
        Debug.WriteLineIf(index!=1, false);
        Debug.WriteLine("Step2: Exiting Main");
    }
}

// Step1: Entering Main
// This is a failed test case.
// 123456
// False
// Step2: Exiting Main

在这里插入图片描述



2. Pin变量 / add watch 实时监控变量的变化


using System.Diagnostics;

class Test
{
    static void Main()
    {
        int index = 2;
        index += 1;
        index *= 2;
        Debug.WriteLine("index-------{0}", index);
        Console.ReadKey();
    }
}


pin to sources & add watch ,这两种方式都是将变量添加到监控面板,最终可以实时观察到变量的变化,方便调试。


(1) pin to sources


step1: debug状态下,将鼠标放到变量上,最终会出现下图pin的对话框,然后点击图钉icon即可pin成功。
在这里插入图片描述


step2: pin成功之后,如下变量的小方框可随意拖到位置。
在这里插入图片描述


(2) add watch


step1: 选中变量,右击,点击 Add Watch 即可
在这里插入图片描述
在这里插入图片描述



3. 自由拖动黄色箭头图标

  • 当debug的时候,黄色箭头还可以向上、向下拖动。如果向上拖动,则上一步还会再次执行一次,但是是基于累加的值执行的。
  • 重复执行某步骤:例如,如下情况时候,index=3。如果将黄色箭头拖动到8行再执行,则index会变为4,相当于每次都会累加执行步骤。
  • 跳过执行某步骤:如果执行到第九行(还未执行第九行),也可以直接拖动黄色箭头到第10行,则第九行就不执行了。

在这里插入图片描述



黄色箭头可以自由拖动的前提是: 代码未执行到黄色箭头所代表的函数、代码段等。



case1: 当断点为所有函数名的时候,此时如下三个断点可以自由拖动的
在这里插入图片描述



case2: 如果断点设置在函数内部,且黄色箭头执行到函数内,则断点无法拖动到函数外面。

在这里插入图片描述



4. 直接修改变量的值

using System.Diagnostics;

class Test
{
    static void Main()
    {
        int index = 2;
        for(int i = 0; i < 50; i++)
        {
            index += 1;
            Console.WriteLine(i);
        }
        if(index == 52)
        {
            Debug.WriteLine("result----------->{0}", index);
        }
        Console.ReadKey();
    }
}

step1: debug到如下步骤的时候,index 与 i的值如下:
在这里插入图片描述

step2: 直接修改index 与 i的值如下,debug到下一步的时候,直接跳过了整个for循环
在这里插入图片描述



5. 两个断点的联动(当一个断点触发,另一个断点才会触发debug)


using System.Diagnostics;

class Test
{
    static void Main()
    {
        int age = 15;
        string gender = "Man";
        if (age > 18)
        {
            Debug.WriteLine("This way please.");
        }
        else
            Debug.WriteLine("This class don't permit under 18.");
        if (gender == "Man")
        {
            Debug.WriteLine("Please pay this order.");
        }
        Console.WriteLine("You are lucky ");
        Console.ReadKey();
    }
}

step1: 在15行处,右击选择"Actions",选择 “Only enable when the following breadpoint is hit”(当某个断点触发的时候,才会调用这个断点) , 后面方框可以选择具体哪个断点。
在这里插入图片描述

    1. 如上代码直接debug的时候发现,直接跳过了11行、15行断点的地方,直接到了19行位置。
    1. 虽然debug的时候,直接到19行,但是13行的else其实也执行。

在这里插入图片描述



  1. 当age =22的时候,11行会和15行的断点联动,一个执行带动另一个也执行。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117841.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

变革:区块链上的政府和企业应用

发表时间&#xff1a;2022年5月12日 信息来源&#xff1a;coingeek.com 区块链只与数字货币和金融交易挂钩的时代已经过去了。这项技术在过去十年中不断发展&#xff0c;今天&#xff0c;它为游戏、社交媒体应用、医疗保健以及供应链管理等多个领域提供着支持。相比其它领域&am…

SpringBoot 整合【Mybatis-Plus实现分页查询】

目录 1. 添加pom.xml依赖 2. 配置application.yml文件 3. mybatis-plus插件配置核心类 4. 启动类配置 5. 测试数据Sql脚本 6. mybatis-plus代码生成 7. 测试分页查询 1. 添加pom.xml依赖 <!--mybatis-plus--><dependency><groupId>com.baomidou</g…

Weighted Logistic Regression和Youtube时长预估

前段时间阅读了youtube的经典论文《Deep Neural Networks for YouTube Recommendations》&#xff0c;其通过weighted LR来实现时长预估&#xff0c;在其原文中对实现的描述非常短&#xff0c;大概意思是在损失函数中&#xff0c;对正例&#xff08;点击&#xff09;的交叉熵项…

中断的分类,中断指令,中断类型码,中断向量表,中断优先级

目录 PC机的中断系统 中断的分类 内部中断&#xff08;软件中断&#xff09; 故障 陷阱 异常终止 中断指令 指令类型中断指令 INT N 溢出中断指令 INTO 中断返回指令 IRET 外部中断&#xff08;硬件中断&#xff09; 非屏蔽中断&#xff08;NMI&#xff09; 可…

Springboot实现定时任务调度

前言 今天给大家分享一下&#xff0c;如何使用springboot快速实现简单的定时调度任务&#xff1f;有两种方法&#xff1a;基于注解的声明式调度任务注册&#xff1b;另外一种是基于实现SchedulingConfigurer的编程式的调度任务注册。 1. 基于注解&#xff08;Scheduled&#…

Problem Set 2

Regularized Normal Equation for Linear Re-gression Given a data set {ar(), y()}i1,.-.,m with x()∈ R" and g(∈ R, the generalform of regularized linear regression is as follows n (he(zr)- g)3入>0号 (1) ” 2m i1 j1 Derive the normal equation. 设 X[(…

P7 PyTorch 属性统计

目录 Norm min max argmax argmin prod sum dim keepdim topk & kthvalue eq&equal一 Norm 作用&#xff1a; 求范数 1.1 1阶范数 # -*- coding: utf-8 -*- """ Created on Thu Dec 22 21:48:02 2022author: cxf """ import torc…

前端_Vue_8.生命周期钩子、侦听器

文章目录一、生命周期钩子1.1. 注册生命周期钩子1.2. 生命周期图示二、侦听器2.1. 基本示例2.2. 深层侦听器2.3. 即时回调的侦听器2.4. 回调的触发时机2.5. this.$watch()2.6. 停止侦听器一、生命周期钩子 每个Vue组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比…

重要升级:SpreadJS 16.0 crack SpreadJS 2023

SpreadJS 16.0 crack&#xff0c;建议大家赶紧升级&#xff0c;速度提升65% Adds enhancements for TableSheet, Designer, Calculation, Shape and Workbook. December 22, 2022 - 16:53New Version Features New File Format New .sjs file format makes the ExcelIO process…

Java语法:final关键字

一、final是什么&#xff1f; final关键字是最终的意思&#xff0c;可以修饰&#xff08;类、方法、变量&#xff09;。 二、final的作用 修饰类&#xff1a;表明该类是最终类&#xff0c;不能被继承&#xff1b; 报错说明&#xff1a;不发从最终的Animal类继承 修饰方法&…

数论专题(2)莫比乌斯反演

今天我们开始莫比乌斯反演的学习.这篇博文特别多的公式,强迫症患者请勿观看 莫比乌斯反演 莫比乌斯函数: 定义莫比乌斯函数,当时,. 当是square-free number时,设的质因数分解有项,则; 否则,; 根据上面,我们不难验证也是积性函数 定理 ,即和互为彼此的逆 证明 设n的不…

4.防止数据权限越权

涉及的修改 这次提交内容很简单&#xff0c;就是在这些类的操作上&#xff0c;添加了 checkXxxDataScope()方法校验&#xff0c;下面来看下这个方法的实现 /*** 校验用户是否有数据权限* * param userId 用户id*/ Override public void checkUserDataScope(Long userId) {if (…

RMQ延迟队列

目录一、场景二、TTL和DLX三、开发步骤一、场景 “订单下单成功后&#xff0c;15分钟未支付自动取消” 1.传统处理超时订单 采取定时任务轮训数据库订单&#xff0c;并且批量处理。其弊端也是显而易见的&#xff1b;对服务器、数据库性会有很大的要求&#xff0c; 并且当处理大…

jeecg-boot前端实现表格插槽、定制化修改

大家好&#xff0c;我是雄雄。 前言 关于jeecg-boot&#xff0c;之前介绍过好多好多次&#xff0c;至于说这是个什么样的技术&#xff0c;这里不在详细介绍&#xff0c;大家可以在gitee或者百度上搜搜&#xff0c;大致了解一下。 因为是个开源的框架&#xff0c;所以一般小项目…

Unity 3D 创建简单的几何模型 || Unity 3D Assets 游戏资源目录管理

Unity 3D 创建简单的几何模型 Unity 3D 是一个强大的游戏开发引擎。在游戏开发中使用的模型常常是从外部导入的&#xff0c;Unity 3D 为了方便游戏开发者快速创建模型&#xff0c;提供了一些简单的几何模型&#xff0c;其中包括立方体、球体、圆柱体、胶囊体等。 自由物体创建…

单测在商家前端业务中的实践

1. 背景 商家系统是提供给得物商家在得物平台上可以稳定运营的服务抓手&#xff0c;前端代码也伴随着系统的发展而不断壮大。这样将导致文档却更新不及时&#xff0c;最后想再通过这些文档回溯业务逻辑也非常困难。 且若代码结构上没有关注&#xff0c;动辄就会产出一个大几千…

LFU 的设计与实现

LFU 的设计与实现 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;LFU 的设计与实现 CSDN&#xff1a;LFU 的设计与实现 题目描述 LFU&#xff08;least frequently used&#xff09;。即最不经常使用页置换算法。 题目链接&#xff1a;LeetCode 460. LF…

浅析Linux字符设备驱动程序内核机制

前段时间在学习linux设备驱动的时候&#xff0c;看了陈学松著的《深入Linux设备驱动程序内核机制》一书。说实话&#xff0c;这是一本很好的书&#xff0c;作者不但给出了在设备驱动程序开发过程中的所需要的知识点&#xff08;如相应的函数和数据结构&#xff09;&#xff0c;…

从零开始的MySQL(2)

目录1.数据库约束1.1 unique1.2 not null1.3 default1.5 primary key1.6 foreign key2. 将A的记录插入到B中3.聚合函数3.1 count()函数3.2 sum()函数3.3 avg()函数3.4 max()函数3.5 MIN()函数3.6 group by4.联合查询4.1 内连接4.2 外连接4.3 自连接4.4 子连接1.数据库约束 约束…

【简单易上手】昇思MindSpore邀你定制专属Diffusion模型

昇思MindSpore首个可训练diffusion模型DDPM马上要和大家见面了&#xff0c;操作简单&#xff0c;可训练推理&#xff0c;单卡即可运行&#xff0c;欢迎广大产学研开发者使用启智社区免费Ascend NPU算力体验 最近爆火的AI绘图&#xff0c;相信大家并不陌生了。 从AI绘图软件生成…