文章目录
- 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”(当某个断点触发的时候,才会调用这个断点) , 后面方框可以选择具体哪个断点。
- 如上代码直接debug的时候发现,直接跳过了11行、15行断点的地方,直接到了19行位置。
- 虽然debug的时候,直接到19行,但是13行的else其实也执行。
- 当age =22的时候,11行会和15行的断点联动,一个执行带动另一个也执行。