本篇体验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. python图片处理和matlab图片处理的区别

    作者:波布兰链接:https://www.zhihu.com/question/28218420/answer/39904627来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  2. PL/SQL开发中动态SQL的使用方法

    一般的PL/SQL程序设计中,在DML和事务控制的语句中可以直接使用SQL,但是DDL语句及系统控制语句却不能在PL/SQL中直接使用,要想实现在PL/SQL中使用DDL语句及系统控制语句,可以通过使 ...

  3. Java中使用google.zxing快捷生成二维码(附工具类源码)

    移动互联网时代,基于手机端的各种活动扫码和收付款码层出不穷:那我们如何在Java中生成自己想要的二维码呢?下面就来讲讲在Java开发中使用 google.zxing 生成二维码. 一般情况下,Java ...

  4. Java之反转排序

    顾名思义,反转排序就是以相反的顺序把原来的数组内容重新进行排序.反转排序算法在我们的程序开发中也是经常用到的.而反转排序的基本思想也很简单,就是把数组最后一个元素与第一个元素进行交换,倒数第二个与第二 ...

  5. Ansible的基础元素和YAML介绍

    本节内容: YAML Ansible常用的数据类型 Ansible基础元素 一.YAML 1. YAML介绍 YAML是一个可读性高的用来表达资料序列的格式.YAML参考了其他多种语言,包括:XML. ...

  6. Zabbix的通知功能以及自定义脚本告警

    本节内容: Zabbix的通知功能 定义接收告警的用户 定义Action Zabbix自定义脚本发送报警邮件 一.Zabbix的通知功能 在配置好监控项和触发器之后,一旦正常工作中的某触发器状态发生改 ...

  7. ViewPager中的子Activity无法响应OnActivityResult的解决方法

    ViewPager子Activity通过startActivityForResult()跳转至OtherActivity,OtherActivity回传结果由ViewPager所在的父Activity ...

  8. 制作Label标签文件时,使用convert_imageset.exe的注意事项

    当前的convert_imageset.exe版本做了一下修改 //status = ReadImageToDatum(root_folder + lines[line_id].first, //li ...

  9. 国内最火的 HTML、CSS、JavaScript 开源项目 Top 榜,你知多少?

    对于开发者而言,想要着手前端开发,HTML.CSS 和 JavaScript 是三项必备的基础技能.而如何事半功倍地掌握好这些知识?通过了解当下火热的开源项目不乏为最佳学习姿势.本文盘点国内评分最高且 ...

  10. Windows 服务器部署 asp.net core

    踩坑日记与 Windows 服务器部署 asp.net core 指南. 准备 操作系统:Windows Server 2008 R2 或更高版本 文件: Microsoft Visual C++ 2 ...