提问与回答 VS2017中C#控制台编程的调试基础示例
来源:互联网 发布:软件如何设计接口 编辑:程序博客网 时间:2024/06/03 14:52
提问:
我每次从main方法进去,然后就一直走,跳进了循环有时候出不来,也不知道怎么处理,并且根本还不会用红点测试,只知道按F11,求大神赐教,尽快拯救我吧。经常走着走着就忘了代码的逻辑了,还想问一下做断点测试需要了解代码逻辑吗
回答:
我的VS版本是2017 community,在调试上 非常方便,工欲善其事必先利其器,推荐安装最新的VS。
用这份代码进行 调试演示,
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp1{ class Program { static void Main(string[] args) { for (int i = 0; i < 100; i++) { Console.WriteLine(i); } Console.WriteLine("a"); Console.WriteLine("b"); Console.WriteLine("c"); Console.ReadKey(); } }}
一、当单步调试时,进入到了循环中,如何跳出来?
首先进行单步调试F11,
跳进循环中,
然后,我也发现 进入到循环中,使用F11单步调试的话,跳出循环就变得不容易。
那么,在循环外面新建一个 红色的断点,
按F5,执行到断点处(断点行的代码并不执行)
F11、断点、F5配合起来用,就可以跳出循环,到达想要去的地方了。
二、红点测试
红点(断点) 配合 F5使用。你就看上面的代码,for循环打印0-99已经测试完成,没有任何问题了。那么,在进行这个程序的测试时,就不用测试循环部分的代码了。
那么就可以在循环部分的下一行,建立一个断点。
然后按F5,一次性执行完断点之前的所有代码,效果如下:
是不是很方便?
三、在调试的时候,走着走着就忘记逻辑了。
这个证明你的代码设计的功夫需要加强,请看下面的代码
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp1{ class Program { static void Main(string[] args) { PrintCSDN();//CSDN PrintShi();//师 PrintWan();//万 PrintWu(); //物 Console.ReadKey(); } /// <summary> /// 向控制台打印"CSDN" /// </summary> static void PrintCSDN() { Console.WriteLine("CSDN"); } /// <summary> /// 向控制台打印"师"字 /// </summary> static void PrintShi() { Console.WriteLine("师"); } /// <summary> /// 向控制台打印"万"字 /// </summary> static void PrintWan() { Console.WriteLine("万"); } /// <summary> /// 向控制台打印"物"字 /// </summary> static void PrintWu() { Console.WriteLine("物"); } }}
每个函数实现的功能数量要把握好度,不能说一个函数实现了四五个功能。PrintWu()函数 就只进行 想控制台打印"物"字。
注释要写好,便利他人 也 便利自己。
在调试的时候,可以清楚的知道每个函数是否顺利完成了任务。
进行简单的示例:
我用单步调试F11,测试了PrintCSDN函数,这个函数的功能是 打印"CSDN",结果发现 这个函数运行正常。我在接着往下进行测试,出现了问题后,只修改一个函数即可。/*程序设计时,有个特点叫做"高内聚 低耦合",你可以去了解一下。类的设计也是有模板的。设计一个优秀的类 事半功倍。*/
四、关于代码逻辑
你在书写代码时,要注上简洁明了的注释,这样做的话,在调试时 代码的逻辑就可以跟上了。
五、"求大神赐教,尽快拯救我吧"
对于新手来说,要意识到,知识是求来的,所以请教他人的时候 态度一定要恭敬。为什么?大家都是辛苦努力之后,才学会一些知识的。如果是以 你欠我的,我不会你就该教的态度 来问问题,那么多半会得到 "自己查去,我很忙" 的回复。
对于前辈来说,要意识到 现在世界是我的,但是将来世界一定是 这些新手的。对于态度恭敬,懂得感恩的后辈要耐心去引导,因为你会发现 帮来帮去,会帮到自己。
- 提问与回答 VS2017中C#控制台编程的调试基础示例
- Java中堆栈的提问与回答
- 提问与回答的智慧
- C#控制台基础 VS2017中为控制台程序设置启动参数(string[] args)
- 提问与回答
- C#控制台基础 结构体与枚举类型连用示例
- C#控制台基础 int类型的list中removeall用法示例
- 提问与回答之ClassLoader
- 北岛的《回答》是回答 更是提问
- 提问和回答的智慧
- VS2017 调用QT5-控制台调用qt示例
- C#控制台基础 自动属性示例
- C#控制台 console.writeline中占位符的示例
- 编程 免费电子书 提问回答 网站
- 提问回答
- 提问与回答之开源协议
- C#控制台基础 一个数的开方与几次方
- C#控制台基础 dictionary 与hashtable的区别
- ORA-30013: undo tablespace 'UNDOTBS1' is currently in use
- C++引用的总结
- 《机器学习》- 支持向量机SVM
- 二维数组的初始化
- 分块算法
- 提问与回答 VS2017中C#控制台编程的调试基础示例
- 学习RecyclerView
- 简单粗暴地理解js原型链–js面向对象编程
- linux
- js url传参中文乱码
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
- Python:多线程、消息队列编程
- SpringBoot配置属性之DataSource
- Android测试-unitTest