本篇体验Visual Studio的10个调试技巧,包括:

1、插入断点和断点管理
2、查看变量信息
3、逐语句F11,逐过程F10,跳出Shift+F11
4、查看堆栈信息
5、设置下一条执行语句
6、调试时修改局部变量并继续调试
7、线程管理
8、为断点设置条件
9、使用命令窗口测试方法
10、变量的历史记录

有这样的一个Person类:

    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }

        public bool IsOlderThanOrEqualTo()
        {
            if (Age >= 18)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        public void PrintAge()
        {
            for (int i = 0; i < Age; i++)
            {
                Console.Write("*");
            }
        }

        public int CalculateDogAge()
        {
            int dogAge = 0;
            dogAge = Age*7;
            return dogAge;
        }

        public void MethodA()
        {
            MethodB();
        }

        public void MethodB()
        {
            MethodC();
        }

        public void MethodC()
        {

        }
    }

客户端调用:

    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person();
            p.Name = "darren";
            p.Age = 22;
            int a = 10;

            //调试方法内
            int result = p.CalculateDogAge();
            Console.WriteLine(result);

            //调试bool类型
            bool olderThan18 = p.IsOlderThanOrEqualTo();
            Console.WriteLine(olderThan18);

            //调试遍历循环
            p.PrintAge();

            p.MethodA();

            Console.ReadKey();
        }

        static int sum(int a, int b)
        {
            return a + b;
        }
    }


1、插入断点和断点管理

→右键代码行
→把鼠标移动到某代码行的任意位置,把鼠标移动到int result = p.CalculateDogAge();
→右键,断点,插入断点


→代码行左侧多了一个红色断点

● 也可通过在代码行的最左侧点击,添加断点。
● 可添加多个断点
● 还可通过:调试→窗口→断点,对断点进行管理

2、查看变量信息

→把鼠标移动到变量名上方
→给代码行打上断点后运行程序,运行程序,停留在断点行
→把鼠标移动到变量p的上方,点击+号可查看变量信息

也可点击菜单栏中:调试→窗口→自动窗口,在"自动窗口"中查看变量的动态信息。

还可点击菜单栏中:调试→窗口→局部变量,在"局部变量"中查看所有变量的动态信息。

还可点击菜单栏中:调试→窗口→监视→监视1,在"监视"中输入变量名并查看该变量的动态信息。

还可以右键变量名,点击"添加到监视"或"快速监视",以查看变量的动态信息。

3、逐语句F11,逐过程F10,跳出Shift+F11

使用逐语句F11调试,当执行某个方法,会跳转到方法内部。
使用逐过程F10调试,当执行某个方法,不会跳转到方法内部。
同时按Shift和F11,会跳转到当前执行方法的上一级中。

4、查看堆栈信息

在调试过程中,还可以查看堆栈信息。

→把断点打在int result = p.CalculateDogAge();代码行
→运行,起初停留在该行
→点击:调试→窗口→调用堆栈
→当没有进入CalculateDogAge方法内部时,调用堆栈窗口中指针指向Main方法

→当按F11使用逐语句调试,进入CalculateDogAge方法内部时,调用堆栈窗口中指针指向Person的实例方法CalculateDogAge

→当按F11使用逐语句调试,跳出CalculateDogAge方法,调用堆栈窗口中指针重新指向Main方法

5、设置下一条执行语句

调试时,左侧的黄色箭头图标表示下一条需要执行的代码行。我们可以通过拖动黄色箭头图标来重新设置应用程序的下一条执行语句。

6、调试时修改局部变量并继续调试

在调试过程中,当希望修改某个变量,但不想停止本次调试,再生成、调试,怎么办?Visual Studio现在允许在调试过程中修改某个变量,并继续调试。

但,此功能不适合64位计算机,如果64位计算机想使用此功能,需要做到:
→右键项目,点击"属性"
→点击"生成"
→在"目标平台"中,选择"x86"

另外,在调试过程中只能修改局部变量,如果想修改类名,方法名之类,需要停止当前调试再修改。

7、线程管理

在调试过程中,点击:调试→窗口→线程,可查看线程的动态信息。

8、为断点设置条件

→ 右键断点,点击"条件",输入如下:

也就是设置,当局部变量a为100时,才进入该断点。

→由于局部变量实际值是10,所有不会进入该断点,最终直接输出了结果。

9、使用命令窗口测试方法

点击:视图→其它窗口→命令窗口,输入如下:

10、变量的历史记录

有时候,希望把某一个变量在循环遍历过程中所有的值都记录下来。

   class Program
    {
        static void Main(string[] args)
        {
            TestMakeObjectId();
        }

        private static void TestMakeObjectId()
        {
            List<string> strs = new List<string>();
            strs.Add("Hello");
            strs.Add("World");
            foreach (string str in strs)
            {
                Console.Write(str + " ");
            }
            Console.ReadKey();
        }
    }


→在Console.Write(str + " ");代码行打上断点,运行。
→把鼠标移动到变量str上,右键,点击"添加监视",得到如下:

→右键监视窗口中变量str所在行,点击"创建对象ID"

得到如下:

→在监视窗口中另起一行,名称是1#,其对应的值自动变为"Hello",即记录下变量str在第一次遍历时的值。

→逐语句F11,str的值变成"World",1#的值不变。于是变量str在整个遍历循环过程中的值都被记录下来。

参考资料:

10+ powerful debugging tricks with Visual Studio

Advanced Debugging in Visual Studio

Visual Studio调试的10个技巧的更多相关文章

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

    系列目录     [已更新最新开发文章,点击查看详细] 可将 Visual Studio 调试器附加到本地或远程计算机上正在运行的进程. 进程运行后,在 Visual Studio 中选择“调试” & ...

  2. Visual Studio 调试(系列文章)

    调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Stud ...

  3. Visual Studio 调试 ---- 系列文章

    调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Stud ...

  4. 12个Visual Studio调试效率技巧

    在这篇文章中,我们假定读者了解VS基本的调试知识,如: F5 开始使用调试器运行程序 F9 在当前行设置断点 F10 运行到下一个断点处 F5 从被调试的已停止程序恢复执行 F11 步进到函数内(如果 ...

  5. Visual Studio 调试技巧[Command Window & Immediate Window ](Tips)

    Visual Studio 调试技巧[Command Window & Immediate Window ](Tips) 1. immediate window 定义的一些 alias (// ...

  6. Visual Studio调试之断点技巧篇

    原文链接地址:http://blog.csdn.net/Donjuan/article/details/4618717 函数断点 在前面的文章Visual Studio调试之避免单步跟踪调试模式里面我 ...

  7. Visual Studio调试之断点技巧篇补遗

    原文链接地址:http://blog.csdn.net/Donjuan/article/details/4649372 讲完Visual Studio调试之断点技巧篇以后,翻翻以前看得一些资料和自己写 ...

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

    系列目录     [已更新最新开发文章,点击查看详细] 01 固定数据提示 如果你在调试时,经常将鼠标悬停在数据提示上,就可能想固定变量的数据提示,方便自己随时查看. 即使在重新启动后,固定的变量也能 ...

  9. VISUAL STUDIO 调试

    调试术语 Visual Studio调试之断点基础篇 Visual Studio调试之断点进阶篇 不能设置断点的检查步骤 Visual Studio调试之断点技巧篇 Visual Studio调试之断 ...

随机推荐

  1. GeoHash核心原理解析 - OPEN 开发经验库

    阅读目录 引子 一.感性认识GeoHash 二.GeoHash算法的步骤 三.GeoHash Base32编码长度与精度 三.GeoHash算法 四.使用注意点 引子 机机是个好动又好学的孩子,平日里 ...

  2. SCTP客户端与服务器

    /** * @brief - Send a message, using advanced SCTP features * The sctp_sendmsg() function allows you ...

  3. 利用sys.dm_db_index_physical_stats查看索引碎片等数据

    我们都知道,提高sql server的数据查询速度,最有效的方法,就是为表创建索引,而索引在对数据进行新增,删除,修改的时候,会产生索引碎片,索引碎片多了,就需要重新组织或重新生成索引,以达到索引的最 ...

  4. JS中给函数参数添加默认值

    最近在Codewars上面看到一道很好的题目,要求用JS写一个函数defaultArguments,用来给指定的函数的某些参数添加默认值.举例来说就是: // foo函数有一个参数,名为x var f ...

  5. js对象的属性:数据(data)属性和访问器(accessor)属性

    此文为转载,原文: 深入理解对象的数据属性与访问器属性 创建对象的方式有两种:第一种,通过new操作符后面跟Object构造函数,第二种,对象字面量方式.如下 var person = new Obj ...

  6. spark java API 实现二次排序

    package com.spark.sort; import java.io.Serializable; import scala.math.Ordered; public class SecondS ...

  7. Linux的bash快捷键

    Ctrl-A 相当于HOME键,用于将光标定位到本行最前面 Ctrl-E 相当于End键,即将光标移动到本行末尾 Ctrl-B 相当于左箭头键,用于将光标向左移动一格 Ctrl-F 相当于右箭头键,用 ...

  8. USACO 6.4 The Primes

    The PrimesIOI'94 In the square below, each row, each column and the two diagonals can be read as a f ...

  9. USACO 6.3 Cowcycles

    CowcyclesOriginally by Don Gillies [International readers should note that some words are puns on co ...

  10. MVC设计模式一

    一:基础知识 1.mvc model view control 2.模型 是应用程序的主体部分,模型表示业务数据与业务逻辑. 一个模型可以为多个视图提供数据 提高了代码的可重用性 3.视图 用户看到的 ...