专栏首页.NET技术与企业级解决方案Visual Studio 调试(系列文章)

Visual Studio 调试(系列文章)

调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧。

  Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题。 该调试器可用于所有 Visual Studio 编程语言及其关联的库。 使用调试程序时,可以中断程序的执行以检查代码、检查和编辑变量、查看寄存器、查看从源代码创建的指令,以及查看应用程序占用的内存空间。

  本系列以 Visual Studio 2019 来演示调试的方法和技巧。希望能帮助大家掌握这些技巧。它们都很简单,却能帮你节约大量的时间。

调试方法与技巧

Visual Studio 调试系列1 Debug 与 Release 模式

Visual Studio 调试系列2 基本调试方法

Visual Studio 调试系列3 断点

Visual Studio 调试系列4 单步后退来检查旧应用状态(使用使用 IntelliTrace 窗口)

Visual Studio 调试系列5 检查变量(使用自动窗口和局部变量窗口)

Visual Studio 调试系列6 监视变量(使用监视窗口和快速监视窗口)

Visual Studio 调试系列7 查看变量占用的内存(使用内存窗口)

Visual Studio 调试系列8 查找导致程序崩溃的 DLL(使用模块窗口)

Visual Studio 调试系列9 调试器提示和技巧

Visual Studio 调试系列10 附加到正在运行的进程

Visual Studio 调试系列11 远程调试

Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序

示例程序

后续的调试以下面的程序为示例进行演示说明。

  1 using System;
  2 using System.Collections.Generic;
  3 
  4 namespace Demo002_NF45_CS50
  5 {
  6     class Program
  7     {
  8         static void Main(string[] args)
  9         {
 10             var shapes = new List<Shape>
 11             {
 12                 new Triangle(4,3),
 13                 new Rectangle(7,4),
 14                 new Circle(),
 15 
 16             };
 17 
 18             foreach (var shape in shapes)
 19             {
 20                 shape.Width = 10;
 21                 shape.Draw();
 22 
 23                 int num1 = 2, num2 = 0;
 24                 num1 = num1 / num2;
 25 
 26                 Console.WriteLine();
 27             }
 28 
 29             Console.WriteLine("Press any key to exit."); // 在调试模式下保持控制台打开
 30             Console.ReadKey();
 31         }
 32     }
 33 
 34     #region 调试示例
 35 
 36     /// <summary>
 37     ///  绘图类(基类)
 38     /// </summary>
 39     public class Shape
 40     {
 41         #region 属性
 42 
 43         /// <summary>
 44         ///  X 轴坐标
 45         /// </summary>
 46         public int X { get; private set; }
 47 
 48         /// <summary>
 49         ///  Y 轴坐标
 50         /// </summary>
 51         public int Y { get; private set; }
 52 
 53         /// <summary>
 54         ///  图形高度
 55         /// </summary>
 56         public int Height { get; set; }
 57 
 58         /// <summary>
 59         ///  图形宽度
 60         /// </summary>
 61         public int Width { get; set; }
 62 
 63         #endregion
 64 
 65         // 绘制图形(虚方法)
 66         public virtual void Draw()
 67         {
 68             Console.WriteLine("Performing base class drawing tasks");// 执行基类绘图任务
 69         }
 70     }
 71 
 72     /// <summary>
 73     ///  圆形
 74     /// </summary>
 75     class Circle : Shape
 76     {
 77         public override void Draw()
 78         {
 79             Console.WriteLine("Drawing a circle"); // 绘制一个圆
 80             base.Draw();
 81         }
 82     }
 83 
 84     /// <summary>
 85     ///  矩形
 86     /// </summary>
 87     class Rectangle : Shape
 88     {
 89         public Rectangle()
 90         {
 91           
 92         }
 93 
 94         public Rectangle(int width, int height)
 95         {
 96             Width = width;
 97             Height = height;
 98         }
 99 
100         public override void Draw()
101         {
102             Console.WriteLine("Drawing a rectangle"); // 绘制一个矩形
103             base.Draw();
104         }
105     }
106 
107     /// <summary>
108     ///  三角形
109     /// </summary>
110     class Triangle : Shape
111     {
112         public Triangle()
113         {
114 
115         }
116 
117         public Triangle(int width, int height)
118         {
119             Width = width;
120             Height = height;
121         }
122 
123         public override void Draw()
124         {
125             Console.WriteLine("Drawing a trangle");// 绘制一个三角形
126             base.Draw();
127         }
128     }
129 
130     #endregion
131 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mybatis学习|下载并导入mybatis源码到idea

    mybatis做为目前国内最为流行的开源orm框架,我们平时在使用时会感受到其带来的诸多便利,但是很少去深入分析,mybatis源码代码量不多,功能丰富,是一个...

    微笑的小小刀
  • 嗨起来!程序员的夜场,用实时编码生成音乐和灯光

    也许你去过的夜店,负责hold住全场音乐的一般是个DJ,可能是一位帅气的小哥哥,或者是一位漂亮的小姐姐,左手扶着耳机,右手在打碟机上飞舞。

    大数据文摘
  • VB.NET 在Visual Studio 2017 和 Visual Studio 2019如何添加报表控件?

    报表就是用表格、图表等格式来动态显示数据,可以用公式表示为:“报表 = 多样的格式 + 动态的数据”。在以往的Visual Studio 版本中都是自带报表控件...

    巴西_prince
  • 受用一生的高效 PyCharm 使用技巧(五)

    PyCharm 里代码块的折叠功能,相当的显眼,在代码编辑框的左侧,你可以发现有 + 也有 -,很容易理解 + 代表代码块被折叠了可以点此展开,而 - 代表这个...

    小小詹同学
  • 受用一生的高效 PyCharm 使用技巧(六)

    点击源文件,再点击View -> Compare With … -> 选择目标文件

    小小詹同学
  • 给普通人的Python——第零天

    对于很多初学者来说,往往缺少一些趁手的工具,从而造成一些不必要的问题,增加了学习之路上的困难。笔者结合自身的经验,会陆续推荐一些工具,引导读者学习使用这些工具自...

    arcticfox
  • 微软发布了开发社区采用.NET Standard的最新信息

    最近,微软发布了开发社区当前采用.NET Standard的最新信息。.NET Standard是API的正式规范,现有.NET实现在不同平台的是通用的(从而允...

    梁规晓
  • JVM|01基础指令

    在本地开发环境中我们很少会遇到需要对jvm进行优化的需求,但是到了生产环境,我们 可能将有下面的需求: 运行的应用“卡住了”,日志不输出,程序没有反应 服务器的...

    微笑的小小刀
  • Python快速入门(一)

    Python作为一个,目前最火的编程语言之一,已经渗透到了各行各业。它易学好懂,拥有着丰富的库,功能齐全。人生苦短,就用Python。

    Criss@陈磊
  • 一键部署 Spring Boot 到远程 Docker 容器,就是这么秀!

    不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容...

    江南一点雨

扫码关注云+社区

领取腾讯云代金券