vs.net的调试小技巧之#define debug(适合新手)
时间:2022-04-23
本文章向大家介绍vs.net的调试小技巧之#define debug(适合新手),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
大多数情况下,vs.net中我们可以用断点来解决调试问题,但有些时候也可能手动需要输出一些信息做为调试的参考,你是否有过调试完成以后,忘记删除某条输出语句的经历?
那么下面的技巧可以解决这个问题:
#define debug
using System;
namespace debugDemo
{
class Program
{
static void Main(string[] args)
{
#if debug
Console.WriteLine("我是调试信息");
#endif
Console.WriteLine("这里是正常的功能代码...");
Console.Read();
}
}
}
注意带"#的部分",这里我们在最开始定义了一个符号debug,然后用#if...#endif做了个判断,意思为:如果 debug被定义过了,则执行
Console.WriteLine("我是调试信息");
这一句,程序运行会输出:
我是调试信息 这里是正常的功能代码...
可能有人要发飙了:"切,不加这几行不也是这么输出么?"
关键的时候到了:程序调试通过,正式发布时,把最开始的#define debug改成#undef debug,再次运行会发现调试信息全部没了!
学会了吗?当然#还有其它用法,比如常见的#region ... #endregion, 更多用法,请自行参考msdn文档
最后再补充一个小技巧:除了用断点查看局部变量的值,还可以用System.Diagnostics.Debug.WriteLine("调试信息,比如临时变量的值");来输出结果到output窗口(Ctrol + W + O可调出该窗口),特别是在做海量循环调试时,如果不想断点按到手发软,用这个比较省力
后话:此乃水文,高手绕过! :)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 数据分析:在缓慢变化中寻找跳变——基于缓慢变化维度的用户分群
- 02 Confluent_Kafka权威指南 第二章:安装kafka
- Kafka集群搭建过程(kafka2.5+eagle)
- 07 Confluent_Kafka权威指南 第七章: 构建数据管道
- java中的reference(二): jdk1.8中Reference的源码阅读
- 08 Confluent_Kafka权威指南 第八章:跨集群数据镜像
- java的reference(五): WeakReference的应用之二--InheritableThreadLocal源码分析
- rabbitmq-3.7.7安装过程
- 09 Confluent_Kafka权威指南 第九章:管理kafka集群
- 关于禁止使用Executors创建线程池的分析
- ArrayList源码分析(基于jdk1.8)(一):源码及基本操作
- ArrayList源码分析(基于jdk1.8)(二):subList陷阱
- 【每日一题】31. Next Permutation
- 关于聚合和多线程的处理套路
- Jboss漏洞利用总结