c语言程序断点怎么打,C#中如何使用断点操作调试程序
发布日期:2021-10-23 03:55:37 浏览次数:15 分类:技术文章

本文共 4278 字,大约阅读时间需要 14 分钟。

Visual Studio调试器调试

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

1.断点操作

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

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

588432d1adcf8a97767c130c72478038.png

图11.4  右键快捷菜单插入断点

2c5b0958a02b032ba588abc6a85330e9.png

图11.5  菜单栏插入断点

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

e915c90ec22a30a116d6a3714d249109.png

图11.6  插入断点后效果图

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

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

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

cb8c85a36db4e3f579aa2d873f71a901.png

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

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

2.开始执行

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

61f89e5b6ac5a3106399b7887a43963f.png

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

ce165072c230985f08510452d312d85b.png

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

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

65081c06add87236c320218ed32d6031.png

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

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

cfb3ec6518b2b08c7f462986c31e4c9b.png

图11.11  运行到断点

2f3170c37e73de84b7a6bdd76d5d4ca2.png

图11.12  查看变量的值

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

3b819c6d2cb45f7e9afbce9437877a29.png

图11.13  运行到光标处

3.中断执行

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

ad8815056561561d69c74ec21d22be43.png

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

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

c859f106b610bea5ac6b5e9ef31e0ed0.png

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

4.停止执行

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

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

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

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

69ee36a6657c99bc9f7d73505c669bac.png

图11.16  单步执行的3种命令

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

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

d87d6245ef5b3280798697788fff3590.png

动态链接库中分配内存引起的问题-- windows已在XX.exe中触发一个断点

动态链接库中分配内存引起的 本文主要是探讨关于在动态链接库分配的内存在主程序中释放所产生的问题,该问题是我在刚做的PJP工程中所遇到的,由于刚碰到之时感动比较诡异(这也是学识不够所致),所以将它写下来 ...

Swing中耗时任务需要另起新线程,这个新线程中更新GUI的操作仍需由EDT来做(转)

最近调试程序时发现,点击某个界面时会出现卡死的情况,出现的频率还是比较频繁的. 再次出现卡死的情况后,利用jvisualvm查看线程的运行情况,dump操作之后发现线程间出现了死锁:Found one ...

Ubuntu16.04 中 Vscode 如何断点调试C语言程序

个人博客链接:Ubuntu16.04 中 Vscode 如何断点调试C语言程序 问题:环境是 Ubuntu16.04,如何使用 Vscode 断点调试C语言程序. 写代码没有调试环境是不能忍受的,所以 ...

JavaScript指定断点操作

什么是断点操作(Breakpoint action) 做前端开发的小伙伴,或许对这个断点操作不是很熟悉.不过你要是问其他语言(比如C,C++ ,C #等)的开发者,他们应该都挺熟悉断点操作,这种断点操 ...

WinDbg常用命令系列---断点操作b*

ba (Break on Access) ba命令设置处理器断点(通常称为数据断点,不太准确).此断点在访问指定内存时触发. 用户模式下 [~Thread] ba[ID] Access Size [O ...

OD断点操作

原文链接:https://www.cnblogs.com/qiyeboy/p/6815988.html 在做Windows平台软件逆向时,Ollydbg是极其常用的逆向工具,动态调试功能非常强大.在调 ...

Android中的多线程断点下载

首先来看一下多线程下载的原理.多线程下载就是将同一个网络上的原始文件根据线程个数分成均等份,然后每个单独的线程下载对应的一部分,然后再将下载好的文件按照原始文件的顺序"拼接"起来就 ...

JavaScript jQuery 中定义数组与操作及jquery数组操作

首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

IE7中使用Jquery动态操作name问题

问题:IE7中无法使用Jquery动态操作页面元素的name属性. 在项目中有出现问题,某些客户的机器偶尔会有,后台取不到前台的数据值. 然开发和测试环境总是不能重现问题.坑爹之处就在于此,不能重现就 ...

随机推荐

MySQL 存储过程和函数

概述 一提到存储过程可能就会引出另一个话题就是存储过程的优缺点,这里也不做讨论,一般别人问我我就这样回答你觉得它好你就用它.因为mysql中存储过程和函数的语法非常接近所以就放在一起,主要区别就是函数 ...

simpleCart的简单使用及配置

simpleCart的功能就不用解释,购物车,很6.官网上的说明太模糊了,还是GIHUb上的好一点:https://github.com/wojodesign/simplecart-js/ 文章解决问 ...

POJ2488-A Knight's Journey(DFS+回溯)

题目链接:http://poj.org/problem?id=2488 A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Tot ...

如何快速读懂大型C++程序代码

要搞清楚别人的代码,首先,你要了解代码涉及的领域知识,这是最重要的,不懂领域知识,只看代码本身,不可能搞的明白.其次,你得找各种文档:需求文档(要做什么),设计文档(怎么做的),先搞清楚你即将要阅读是 ...

数据库学习之ADO.NET五大对象

1 [ADO.NET]      ado.net 是一种数据访问技术,使得应用程序能够连接到数据存储,并以各种方式操作存储在里面的数据.    2 [ADO.NET五大常用对象]     Connec ...

ADO.Net笔记整理(一)

几次装机,Notes已烟消云散,近日因为Node.js死活搞不定,无奈装机,备份好的东东,没想到磁盘扇区出现异常,可能是PE启动盘的病毒,只好将磁盘全部重新分区,恢复数据也懒得恢复了,日积月累关乎将来 ...

jmeter保持登录

1.添加配置元祖---http cookie 管理器(注意上面的http cookie管理器和其他的配置是对其的) 2.这里是当你想要配置多用户并发是要配置不同的账号,配置后记得上面的第一张图的清除c ...

Java代码审计连载之—添油加醋

在代码审计中,按业务流程审计当然是必须的,人工的流程审计的优点是能够更加全面的发现漏洞,但是缺点是查找漏洞效率低下.如果要定向的查找漏洞,逆向跟踪变量技术就显得更加突出,如查找XSS.SQL注入.命令 ...

mysql--------char 和 varchar 的区别

char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是: char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在 ...

6.26-EL表达式,JSTL标签

一.EL表达式 功能: 替代jsp中数据访问时的复杂java代码 语法: ${表达式} ${(5+9)*2} 访问顺序: page--->request--->session---> ...

转载地址:https://blog.csdn.net/weixin_30496999/article/details/117046082 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:c语言程序实训报告模板,C语言实训报告模板..doc
下一篇:c语言迷宫问题输出坐标,c语言栈解决迷宫问题

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月23日 15时34分54秒