5.1 程序调试

server/2025/3/15 3:25:23/

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的

本节中为了演示方便,使用的代码如下:

【例 5.1【项目:code5-001】程序的调试。

        static void Main(string[] args)

        {

            int[] a = new int[100]; ;

            int s = 0;

 

            for (int i = 0; i < 100; i++)

                a[i] = i;

            for (int i = 0; i < 100; i++)

                s += a[i];

            Debug.Print("Print "+ s.ToString());

            Debug.WriteLine("WriteLine " + s.ToString());

            Console.WriteLine(s.ToString());

            Console.ReadKey();

        }

在C#中调试程序主要有以下方法:

1、中断

中断调试时可以方便地跟踪数据值,增加中断位置(即断点)可以在需要跟踪调试的语句处按下F9键,或者在需要中断的语句左侧用鼠标左键点击一下,此时会出现棕红色圆圈,并且代码也变成棕红色背景。例如在

a[i] = i;

这一句增加中断:

图5-1 设置断点

添加断点时,请注意鼠标点击位置。

删除断点,可以再次按下F9键,或者在棕红色圆圈上点击一下鼠标左键,此时不再显示棕红色圆圈,所在代码行背景也变回白色,就表示取消了断点。

增加或删除断点不仅仅是在编辑时有效,程序运行时也是可以操作的。

按下F5键运行时,程序将切换回C#编辑器下,在设置的断点处中断,此时,断点行的背景色为黄色,同时不可修改代码:

图5-2 程序在断点中断

此时把鼠标放到变量上,就可以很直观的看到变量的值:

图5-3 中断时查看变量值

这是第一次进入for循环,所以i的值为0。由于断点位置在循环语句内,i从0到99,所以整个运行过程将会中断100次。

然后,按下工具栏上的“逐语句”按钮(快捷键F11),程序将会执行到下一句

i++

处,当然,按下F5,程序会继续中断到

a[i] = i;

处,此时i的值也变为1。

变量即使是数组、结构、类,它的值都可以立即获得:

图5-4 查看数组变量的值

注意:关于快捷键的设置,可以点击菜单【工具】|【选项】,从弹出的【选项】窗口中,从左侧找到并点击【环境】|【键盘】进入快捷键设置:其它快捷键可以从“显示命令包含”项中找到需要修改快捷键的命令,然后进行更改:

图5-5 更改快捷键

2、添加监视

当程序进入中断的时候,还可以添加变量的监视。

例如,要监视s的值,鼠标右键点击s(点在左右旁边也无所谓),弹出菜单上选择“添加监视”即可:

图5-6 添加对变量的监视

此时,变量s出现在监视窗口中:

图5-7 监视窗口

为了更能说明监视的s,笔者同时增加了对i的监视,可以看到当i=7时,s=21。注意i=7时,a[7]=7,由于此时中断,还没有计算s+=a[7],所以s=0+1+2+3+4+5+6,而不是s=0+1+2+3+4+5+6+7。

图5-8 监视变量的值随程序运行而更改

3、Debug输出

在代码中使用了Debug.Print和Debug.WriteLine来实时地输出变量的值,方便查看和调试。这两个方法的用法差不多。都是将变量的值输出到【即时窗口】中:

图5-9 Debug输出变量的值

4、Console输出

在窗体编程时,也可以用Console.WriteLine方法实时地输出变量的值,功能和Debug差不多。不同的是,Console.WriteLine输出的结果是显示在【输出】窗口中。如果是控制台应用程序开发下,Console.WriteLine只会输出到控制台显示。

学习更多vb.net知识,请参看vb.net 教程 目录

学习更多C#知识,请参看C#教程 目录

 


http://www.ppmy.cn/server/175047.html

相关文章

鸿蒙开发者社区资源的重要性

鸿蒙系统&#xff0c;作为华为公司自主研发的操作系统&#xff0c;旨在为各类智能设备提供统一的平台。它不仅支持手机、平板电脑等移动设备&#xff0c;还涵盖了物联网&#xff08;IoT&#xff09;设备和其他智能家居产品。鸿蒙系统的开发环境和工具链对于开发者来说至关重要&…

从零开始训练小型语言模型之minimind

文章目录 从零开始训练小型语言模型之minimind什么是minimind从小模型开始 从零开始训练小型语言模型之minimind 什么是minimind github: https://github.com/jingyaogong/minimind 目前市面上的大语言模型动辄上百亿参数&#xff0c;训练成本高昂。就算是自己想学习和研究&…

Go 语言封装 HTTP 请求的 Curl 工具包

文章目录 Go 语言封装 HTTP 请求的 Curl 工具包&#x1f3d7;️ 工具包结构简介核心结构体定义初始化函数 &#x1f31f; 功能实现1. 设置请求头2. 构建请求3. 发送请求4. 发送 GET 请求5. 发送 POST 请求6. 发送 PUT 请求7. 发送 DELETE 请求8. 读取响应体 &#x1f4a1; 实现…

蓝桥杯刷题 Day1 高精度加法

蓝桥杯刷题 Day1 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 蓝桥杯刷题 Day1前言一、大数加法1. 解题思路2. 代码2.1主函数2.2 去除前导02.3 大数相加2.4 完整代码 二、KMP字符串匹配0. 知识点速记1. 解题思路…

Spark;scp命令,rsync命令,ssh命令

hadoop的运行模式 本地运行&#xff1a;在一台单机上运行&#xff0c;没有分布式文件系统&#xff0c;直接读写本地操作系统的文件系统。特点&#xff1a;不对配置文件进行修改&#xff0c;Hadoop 不会启动 伪分布式&#xff1a;也是在一台单机上运行&#xff0c;但用不同的…

DeepSeek本地接口调用(Ollama)

前言 上篇博文&#xff0c;我们通过Ollama搭建了本地的DeepSeek模型&#xff0c;本文主要是方便开发人员&#xff0c;如何通过代码或工具&#xff0c;通过API接口调用本地deepSeek模型 前文&#xff1a;DeepSeek-R1本地搭建_deepseek 本地部署-CSDN博客 注&#xff1a;本文不仅…

go GRPC学习笔记

本博文源于笔者正在学习的gprc&#xff0c;相关配套书籍素材来源是《Go编程进阶实战》&#xff0c;博文内容主要包含了RPC模式讲解&#xff0c;RPC通过htttp访问、拦截器、提高服务端与客户端容错的内容配置 在此之前需要下载protoc&#xff0c;这里不做下载过程 1、RPC模式 …

架构思维:高性能架构_01基础概念

文章目录 概述基础概念性能指标利特尔法则&#xff08;O T L&#xff09;系统优化策略1. 降低耗时&#xff08;L↓&#xff09;2. 增加容量&#xff08;O↑&#xff09;3. 增加时延&#xff08;L↑&#xff09; 场景化指标选择响应时间优先吞吐量/容量优先平衡策略 概述 一个…