我们在一些调试的情景下,我们可能会出现这种情况:我们在程序中设置了断点 A、B、C、D,然后我们在一次调试中不想让断点 B、C 生效,但是在下一次调试中我们可能又需要使用断点 B、C,这回我们应该怎么办呢?

有同学会说了:我们不需要断点 B、C 的时候把断点 B、C 删除掉,需要的时候再设置一下就行了。这确实是个不错的想法,但是如果我们的工程很大呢?断点又分布在不同的地方,那我们该怎么办呢?

因为 Visual Studio 本身就是为大工程而生的,所以我们完全不用担心工程大的问题,其实在很多调试器中都包含了类似断点禁用的功能,Visual Studio 的 Remote Debugger 也不例外,我们可以通过暂时禁用断点来达到上述目的。

我们接下来通过下面这段代码来显示我们工作收入的正确打开方式,首先我们在第7行设置一个断点,然后按 F5 启动调试器。等待断点第一次被触发。

#include

#include

int main(){

for ( int i=1; i <= 500; i++ )

{

printf("现在我有%d万元资产\n", 6666 * i);

//TODO:在这里插入断点

_sleep(500 - i);

}

}

断点第一次被触发的时候,我们注意这个地方,我们使用鼠标右键单击它,并在弹出的菜单中选择禁用断点(D),这时断点行的图标也变成了

,这就说明我们的断点被成功地禁用了。

接下来我们按 F5 继续被调试程序的运行,开启疯狂收入模式,资产增加的速度会越来越快哦。为了预防财富所带来的危险(土豪略过),我们需要将程序暂停,这时我们使用鼠标右键单击我们的断点图标,在弹出的菜单中选择 启用断点(L),这时我们的断点图标又变成了

,这就说明我们的断点被成功地启用了。我们按 Shift + F5 终止调试。同样的,在编辑代码模式下我们也可以启用或禁用断点。断点的启用和禁用极大程度的方便了我们的调试操作。

在一些调试情境下,我们可能会碰到这样的情况,我们想让程序在运行到某个地方的时候输出一定的调试信息,比如当前正在执行的函数什么的。这时我们可以设置断点,查看堆栈,再按 F5 继续运行。但是这样是很麻烦的,我们需要不停地按 F5 ,不过不用担心,这里我们有更好的解决方案——使用跟踪点。

下面我们来了解一下跟踪点,什么是跟踪点呢?顾名思义,他是用来跟踪程序的。跟踪点和断点差不多,也是靠触发起作用的,唯一不同的是,它可以选择是否像调试窗口输出跟踪消息,并且可以选择是否暂停程序。所以我们可以把跟踪点当成是一类特殊断点。

我们来试试在 Visual Studio 编辑器中插入跟踪点,与插入断点一样,我们把插入光标移到想要插入跟踪点的位置,然后点击鼠标右键,在弹出的菜单中点击 断点(B) -> 插入跟踪点(T) ,我们可以看到这么个对话框:

我们看到,上面有很多提示信息,我们只要根据提示信息操作即可。比如在循环中我们常用到的打印消息:

函数:$FUNCTION , 变量值 i 的值为 {i}

接下来我们使用跟踪点来跟踪冒泡排序算法的数据交换过程。我们在 Visual Studio 中新建一个工程,输入如下代码:

#include

void genBubbleSort(int prevArray[] , int arrayLength){

int p , n , tempValue;

for (n = 0 ; n < arrayLength - 1 ; n++){

for (p = 0; p < arrayLength - 1 - n; p++){

if (prevArray[p] > prevArray[p + 1])

{

//数据交换

tempValue = prevArray[p];

prevArray[p] = prevArray[p + 1];

prevArray[p + 1] = tempValue;

//TODO:插入断点

}

}

}

}

int main(){

int myArray[10] = { 127 , 325 , 1235 , 7768 , 844 , 651 , 5424 , 102 , 318 , 907 };

int arraySize = 10;

printf("!原始数组:\n");

for (int i = 0 ; i < arraySize ; i++){

printf(" -> 第%d项 : %d " , i + 1 , myArray[i]);

printf("\n");

}

genBubbleSort(myArray , arraySize);

printf("!冒泡排序后的数组:\n");

for (int i = 0 ; i < arraySize ; i++){

printf(" -> 第%d项 : %d ", i + 1 , myArray[i]);

printf("\n");

}

getchar();

}

上面这就是一个典型的冒泡排序算法的实现了。现在我们在第8行插入跟踪点,我们打印如下信息(花括号里的是我们想要查看的变量的值)。

函数:$FUNCTION 数组第{p}项:{prevArray[p]}> 数组第{p+1}项{prevArray[p+1]} 进行交换

我们通过调试器调试这个程序可以看到冒泡排序的过程,现在我们按 F5 启动调试器开始运行,这时我们查看输出窗口:

这里是不是输出了跟踪信息呢,没错,跟踪点的使用就是这么简单,大家可以尝试使用跟踪点显示我们的 tempValue 变量的变化情况,体验跟踪点使用的酸爽!

c语言程序调试设断点的优点,断点的操作以及跟踪点的设置相关推荐

  1. 在c语言中调试作用是什么意思,c语言程序调试方法整理

    c语言程序的调试方法 所谓程序调试是指对程序的查错和排错. 调试程序一般应经过以下几个步骤: 一.先进行人工检查,即静态检查. 在写好一个程序以后,不要匆匆忙忙上机,而应对程序进行人工检查.这一步十分 ...

  2. c语言程序课程设计问题,矩形问题-C语言程序课程设课程设计(论文).doc

    矩形问题-C语言程序课程设课程设计(论文) PAGE PAGE \* MERGEFORMAT 20课程设计(论文)题 目 名 称 矩形问题 课 程 名 称 C语言程序课程设计 学 生 姓 名 xxx ...

  3. c语言程序调试断点,VC6断点调试技巧

    前言: 看到不少同学在学习过程中总会碰到各种与自己期望不符的结果而不知所措,如运行结果不对,程序运行崩溃.输出乱码等这种语法正确编译能通过而逻辑不正确的情况,发生这类问题大多都是因为我们无法掌控编译器 ...

  4. 万年历c语言程序课设,万年历C语言程序设计.pdf

    沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目:万年历软件设计 学 院:计算机学院 专 业:计算机科学与技术 班 级: 学 号: 姓 名: 指导教师:从丽晖 起止 ...

  5. 【嵌入式】C语言程序调试和宏使用的技巧

    00. 目录 文章目录 00. 目录 01. 调试相关的宏 02. # 字符串化操作符 03. ## 连接操作符 04. 调试宏第一种形式 05. 调试宏的第二种定义方式 06. 对调试语句进行分级审 ...

  6. vs c语言程序调试方法,VS2015中的常用调试技巧分享

    原标题:VS2015中的常用调试技巧分享 为什么要学习调试? 调试(Debug)是作为一个程序员必须要学会的东西,学会调试可以极大的提高开发效率,排错时间,很多人不喜欢调试,但我认为这是一个很不可取的 ...

  7. 《愤怒的小鸟》——大一下C语言程序课设

    目录 一.介绍 1.题目要求 2.资源 二.关键功能的实现 1.设计的结构体和链表: 2.弹弓拉绳的实现: 3.当绳子拉伸达到上限时,仍然使小鸟可以改变方向: 3.计算小鸟飞出后的任意时刻的位置: 一 ...

  8. c语言程序调试时无法启动程序,c – “无法启动程序”(调试版本)

    Microsoft Visual Studio Unable to start program 'theprogram.exe'. This application has failed to sta ...

  9. 调试一个c语言程序要经过,c语言程序调试

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 scanf("%f",&p1->score); } p2->next = NULL; /*此句就是根据单向链表的最 ...

最新文章

  1. Mac 终端便利工具: 管理工具-Homebrew 和提示工具oh my zsh
  2. java开发app启动跳转到一个广告,Android实现点击通知栏后,先启动应用再打开目标Activity...
  3. mongodb配置windows服务启动
  4. 亮剑:PHP,我的未来不是梦(5)
  5. 如何学习配置webpack(一)
  6. GIS基本知识学习PDF文档
  7. LeetCode:226. 翻转二叉树
  8. LeetCode 788. Rotated Digits
  9. Linux的链接工具 putty 以及一些命令。
  10. 非线性系统离散线性化方法(一)
  11. 尚学堂马士兵老师的JAVA自学之路
  12. phpqrcode简单在线二维码生成工具源码 非第三方接口
  13. 新款macbook pro发布了,但为什么不推荐购买
  14. (转载)JAVA小知识
  15. 视频教程-OpenGL入门2019版-其他
  16. 2021观澜二中高考成绩查询,最新深中高考地段生源数据揭秘:站上时代风口,踊追新中心二梯队学区房!...
  17. win10的c语言程序闪退,Win10专业版软件打不开闪退怎么办?
  18. .m3u8视频文件的初步探索
  19. java respose输出mp4,使用safari读取通过servlet返回的MP4视频文件报错
  20. 操作体验极度舒适的多功能软件卸载工具 - iObit Uninstaller PRO

热门文章

  1. 【操作系统】对操作系统的认识
  2. android DrawerLayout 点击穿透、点击自身消失等问题解决
  3. Revit API Hook 之 拦截鼠标双击元素事件
  4. matlab函数im2bw_matlab函数大全
  5. PF-Net基于深度学习的点云补全网络
  6. 【计量模型整理】偏最小二乘回归 PLS
  7. HTML5与CSS实现神途官网
  8. 湖北联通的综合营帐数据同步应用--案例
  9. 本人C++代码危险度划分
  10. jsp页面更换图片后,还是显示原来的图片解决方法!