C#中利用断点操作调试程序的步骤详解
Visual Studio调试器调试
我们大家都知道,当代码不能正常运行时,可以通过调试定位错误。常用的程序调试操作包括设置断点、开始、中断和停止程序的执行、单步执行程序以及使程序运行到指定的位置。下面将对这几种常用的程序调试操作进行详细地介绍。话不多说了,来一起看看详细的介绍吧。
1.断点操作
断点通知调试器,使应用程序在某点上(暂停执行)或某情况发生时中断。发生中断时,称程序和调试器处于中断模式。进入中断模式并不会终止或结束程序的执行,所有元素(如函数、变量和对象)都保留在内存中。执行可以在任何时候继续。
插入断点有3种方式:在要设置断点的代码行旁边的灰色空白中单击;右键单击要设置断点的代码行,在弹出的快捷菜单中选择“断点”→“插入断点”命令,如图11.4所示;单击要设置断点的代码行,选择菜单中的“调试”→“切换断点(G)”命令,如图11.5所示。
图11.4 右键快捷菜单插入断点
图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>键执行“跳出”操作。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
上一篇:ajaxFileUpload插件,C#返回Json数据报错问题的解决方案
栏 目:C#教程
本文标题:C#中利用断点操作调试程序的步骤详解
本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/5317.html
您可能感兴趣的文章
- 01-10C#通过反射获取当前工程中所有窗体并打开的方法
- 01-10C#实现Winform中打开网页页面的方法
- 01-10C#文件断点续传实现方法
- 01-10C#实现由四周向中心缩小的窗体退出特效
- 01-10Extjs4如何处理后台json数据中日期和时间
- 01-10C#中DataGridView常用操作实例小结
- 01-10C#编程获取资源文件中图片的方法
- 01-10asp.net中XML如何做增删改查操作
- 01-10C#利用反射技术实现去掉按钮选中时的边框效果
- 01-10C#中查找Dictionary中的重复值的方法
阅读排行
本栏相关
- 01-10C#通过反射获取当前工程中所有窗体并
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新
- 01-10C#停止线程的方法
- 01-10C#实现清空回收站的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的
- 01-10C#实现读取注册表监控当前操作系统已
随机阅读
- 04-02jquery与jsp,用jquery
- 01-11ajax实现页面的局部加载
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-10delphi制作wav文件的方法
- 01-10SublimeText编译C开发环境设置
- 01-10C#中split用法实例总结