本篇体验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. ubuntu获得root用户权限,使用xshell连接!

    一.获取root用户权限 打开linux终端命令,输入 sudo passwd root Enter new UNIX password: (在这输入你的密码) Retype new UNIX pas ...

  2. 分析Windows的死亡蓝屏(BSOD)机制

    这篇文章本来是投Freebuf的,结果没过.就贴到博客里吧,图懒得发上来了 对于Windows系统来说,被人们视为洪水猛兽的蓝屏也是一种有利于系统稳定的机制.蓝屏其实是Windows系 统的一种自查机 ...

  3. MATLAB读写Excel文件中的数据

    读取: %读取filename文件中指定表的数据,存入dataRead矩阵中 dataRead=xlsread('filename.xls',sheet); 写入: %将矩阵dataWrite中的数据 ...

  4. 二进制方式部署Kubernetes 1.6.0集群(开启TLS)

    本节内容: Kubernetes简介 环境信息 创建TLS加密通信的证书和密钥 下载和配置 kubectl(kubecontrol) 命令行工具 创建 kubeconfig 文件 创建高可用 etcd ...

  5. ASP.NET Identity 修改表名和主键类型

    public class UserLogin : IdentityUserLogin<Guid> { } public class UserRole : IdentityUserRole& ...

  6. 【LOJ】#2032. 「SDOI2016」游戏

    题解 看错题了,以为单次修改相当于一个覆盖,后来才明白"添加"-- 就相当于添加很多线段求最小值 首先这个等差数列添加的方式比较烦人,我们拆开两条链,一条s到lca,一条lca到t ...

  7. USACO 5.5 Twofive

    TwofiveIOI 2001 In order to teach her young calvess the order of the letters in the alphabet, Bessie ...

  8. 牛客网 江西财经大学第二届程序设计竞赛同步赛 D.绕圈游戏-(跳青蛙游戏)找数的所有因子就可以了

    链接:https://ac.nowcoder.com/acm/contest/635/D来源:牛客网 D.绕圈游戏 433为了帮ddd提升智商,决定陪他van特殊的游戏.433给定一个带有n个点的环, ...

  9. PHP编程基础学习(一)——数据类型

    PHP一共支持8种原始类型,其中: 4种标量类型: boolean(布尔型) integer(整型) float/double(浮点型) string(字符串型) 两种复合类型: array(数组) ...

  10. Anaconda 安装好了,却无法运行?

    使用管理员运行:conda prompt 或者 Windows PowerShell 执行命令 conda update anaconda-navigator 还是不行就试试命令: anaconda- ...