当代码不能正常运行时,可以通过调试定位错误。常用的程序调试操作包括设置断点、开始、中断和停止程序的执行、单步执行程序以及使程序运行到指定的位置。下面将对这几种常用的程序调试操作进行详细地介绍。

1.断点操作

断点通知调试器,使应用程序在某点上(暂停执行)或某情况发生时中断。发生中断时,称程序和调试器处于中断模式。进入中断模式并不会终止或结束程序的执行,所有元素(如函数、变量和对象)都保留在内存中。执行可以在任何时候继续。

插入断点有3种方式:在要设置断点的代码行旁边的灰色空白中单击;右键单击要设置断点的代码行,在弹出的快捷菜单中选择“断点”→“插入断点”命令,如图11.4所示;单击要设置断点的代码行,选择菜单中的“调试”→“切换断点(G)”命令,如图11.5所示。

图11.5菜单栏插入断点

插入断点后,就会在设置断点的行旁边的灰色空白处出现一个红色圆点,并且该行代码也呈高亮显示,如图11.6所示。

图11.6插入断点后效果图

删除断点主要有3种方式,分别如下:

(1)可以单击设置了断点的代码行左侧的红色圆点。

(2)在设置了断点的代码行左侧的红色圆点上单击鼠标右键,在弹出的快捷菜单中选择“删除断点”命令,如图11.7所示。

图11.7右键快捷菜单删除断点

(3)在设置了断点的代码行上单击鼠标右键,在弹出的快捷菜单中选择“断点”/“删除断点”命令。

2.开始执行

开始执行是最基本的调试功能之一,从“调试”菜单(如图11.8所示)中选择“开始调试”菜单,或在源代码窗口中右键单击可执行代码中的某行,从弹出的快捷菜单中选择“运行到光标处”菜单,如图11.9所示。

图11.8选择“启动调试”菜单

图11.9选择“运行到光标处”菜单

除了使用上述的方法开始执行外,还可以直接单击工具栏中的 按钮,启动调试,如图11.10所示。

图11.10工具栏中的启动调试按钮

如果选择“启动调试”菜单,则应用程序启动并一直运行到断点,此时断点处的代码以黄色底色显示,如图11.11所示。可以在任何时刻中断执行,以查看值(将鼠标移动到相应的变量或者对象上,即可查看其具体值,如图11.12所示)、修改变量或观察程序状态。

图11.11运行到断点

图11.12查看变量的值

如果选择“运行到光标处”命令,则应用程序启动并一直运行到断点或光标位置,具体要看是断点在前还是光标在前,可以在源代码窗口中设置光标位置。如果光标在断点的前面,则代码首先运行到光标处,如图11.13所示。

图11.13运行到光标处

3.中断执行

当执行到达一个断点或发生异常时,调试器将中断程序的执行。选择“调试”→“全部中断”菜单后,调试器将停止所有在调试器下运行的程序的执行。程序并没有退出,可以随时恢复执行,此时应用程序处于中断模式。“调试”菜单中“全部中断”菜单如图11.14所示。

图11.14“调试”→“全部中断”菜单

除了通过选择“调试”→“全部中断”命令中断执行外,也可以单击工具栏中的 按钮中断执行,如图11.15所示。

图11.15工具栏中的中断执行按钮

4.停止执行

停止执行意味着终止正在调试的进程并结束调试会话,可以通过选择菜单中的“调试”→“停止调试”命令来结束运行和调试。也可以选择工具栏中的 按钮停止执行。

5.单步执行和逐过程执行

通过单步执行,调试器每次只执行一行代码,单步执行主要是通过逐语句、逐过程和跳出这3种命令实现的。“逐语句”和“逐过程”的主要区别是当某一行包含函数调用时,“逐语句”仅执行调用本身,然后在函数内的第一个代码行处停止。而“逐过程”执行整个函数,之后在函数外的第一行代码处停止。如果位于函数调用的内部并想返回到调用函数时,应使用“跳出”,“跳出”将一直执行代码,直到函数返回,然后在调用函数中的返回点处中断。

当启动调试后,可以单击工具栏中的 按钮执行“逐语句”操作,单击 按钮执行“逐过程”操作,单击 按钮执行“跳出”操作,如图11.16所示。

图11.16单步执行的3种命令

说明:除了在工具栏中单击这3个按钮外,还可以通过快捷键执行这3种操作,启动调试后,按下<F11>键执行“逐语句”操作、<F10>键执行“逐过程”操作、<Shift+F10>键执行“跳出”操作。

本文来自明日科技出版的《零基础学C#,转载请注明出处!!!

如何使用Visual Studio调试C#程序的更多相关文章

  1. 【VBS】使用Visual Studio调试VBS程序

    首先要确保机器上安装了Visual Stuido, 然后打开命令行窗口执行如下命令,会弹出是否使用Visual Studio进行调试的确认窗口. 点[是]进行调试. WScript.exe [vbs文 ...

  2. 使用visual studio 调试android 程序 ,真机调试

    1 使用visual studio 2015 新建 blank android APP , 2 安卓手机调整到开发者模式 3 通过USB链接到PC 4 自动检测 设备(这一步貌似没有立即检测到真机设备 ...

  3. visual studio调试exe程序

    标题:How to debug and profile any EXE with Visual Studio 文章:https://devblogs.microsoft.com/visualstudi ...

  4. Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序

    系列目录     [已更新最新开发文章,点击查看详细] 要调试已部署到IIS的ASP.NET应用程序,请在部署应用程序的计算机上安装并运行远程工具,然后从Visual Studio附加到正在运行的应用 ...

  5. C#比较两个对象是否为同一个对象。 Visual Studio调试器指南---多线程应用程序调试(一)

    两个对象是否为同一个对象:是看两个对象是否指向堆中的同一块内存. 1.使用object.ReferenceEquals() class Program { static void Main(strin ...

  6. Visual Studio调试之断点进阶篇

    Visual Studio调试之断点进阶篇 在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常.程序中 ...

  7. Visual Studio调试之断点基础篇

    Visual Studio调试之断点基础篇 我曾经问过很多人,你一般是怎么调试你的程序的? F9, F5, F11, F…… 有很多书和文章都是介绍怎么使用Visual Studio编写WinForm ...

  8. 在 Visual Studio 调试器中指定符号 (.pdb) 和源文件

    查找并指定符号文件和源文件:指定符号加载行为.使用符号和源服务器上:加载符号自动或在要求.   内容 查找符号 (.pdb) 文件 查找源文件   查找符号 (.pdb) 文件 说明 在之前的 Vis ...

  9. 调试 - Visual Studio调试

    Visual Studio - 调试 异常处理机制 windows预定义了一系列的异常错误码,每种程序异常都有一个对应的错误码,windows系统将这些类似键值对关系的数据存储在异常处理表中(称为SE ...

随机推荐

  1. 学生成绩管理系统C(链表)语言

    #include"stdio.h" #include"stdlib.h" #include"string.h" //用于调用一些函数 str ...

  2. [luogu2154 SDOI2009] 虔诚的墓主人(树状数组+组合数)

    传送门 Solution 显然每个点的权值可以由当前点上下左右的树的数量用组合数\(O(1)\)求出,但这样枚举会T 那么我们考虑一段连续区间,对于一行中两个常青树中间的部分左右树的数量一定,我们可用 ...

  3. 洛谷 1486 郁闷的出纳员【Treap】

    [题意概述] 要求维护一个序列支持以下操作: 1,插入元素x: 2,把序列的所有元素加上x: 3,把序列的所有元素减去x,同时低于一个给定的下限的元素马上被删除: 4,询问序列中第k大的元素. [题解 ...

  4. 精彩的linux shell 命令

      1. Star Wars (telnet) telnet是基于Telnet协议的远程登录客户端程序,经常用来远程登录服务器.除此还可以用它来观看星球大战: telnet towel.blinken ...

  5. Java 学习(7):java 日期时间 & 正则表达式

    目录 --- 日期时间 --- 正则表达式 日期时间:java.util 包提供了 Date 类来封装当前的日期和时间. Date 类提供两个构造函数来实例化 Date 对象. 构造函数:用于初始化对 ...

  6. ACdream区域赛指导赛之专题赛系列(1)の数学专场

    Contest : ACdream区域赛指导赛之专题赛系列(1)の数学专场 A:EOF女神的相反数 题意:n(<=10^18)的数转化成2进制.翻转后(去掉前导零)输出十进制 思路:water ...

  7. ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined) C. Molly's Chemicals

    感觉自己做有关区间的题目方面的思维异常的差...有时简单题都搞半天还完全没思路,,然后别人提示下立马就明白了...=_= 题意:给一个含有n个元素的数组和k,问存在多少个区间的和值为k的次方数. 题解 ...

  8. SQL SEVER 2008中的演示样例数据库

    SQL SEVER 2008数据库是什么我就不说了,我在这里分享一下怎样学习SQL SEVER 2008数据库,假设是对数据库或是SQL SEVER 数据库全然陌生或是不熟悉的人来说,建议看看一些视频 ...

  9. HDU1010-奇偶剪枝(DFS)

    题目链接:Tempter of the Bone 第一次做剪枝的题目,剪枝,说实话研究的时间不短.好像没什么实质性的进展,遇到题目.绝对有会无从下手的感觉,剪枝越来越神奇了. .. . HDU1010 ...

  10. WPF学习笔记——没有前途的WPF

    看上去,WPF比silverlight有前途一点.毕竟,微软还没有宣布,WPF停止更新. 但我怀疑,不久的将来,WPF也会步其子集silverlight的后尘,要么不再出后续版本,要么向HTML5 + ...