C语言中的单步跟踪调试

单步调试是指程序开发中,为了找到程序的bug,通常采用的一种调试手段,一步一步跟踪程序执行的流程,根据变量的值,找到错误的原因。

下面以一个简单的小程序为例,这里的程序必须是在项目下,单个文件不能调试,会直接编译执行。
程序是利用函数max()实现找到两个变量中较大的那一个变量,这里简单起见,a,b的值都是给定的。

#include <stdio.h>
int max(int x,int y) {int temp;temp = x>y?x:y;/*判断形式参数x和y的大小,并赋值给temp,随后带出函数体*/return temp;
}
int main() {int a,b,result;a=3;b=4;result = max(a,b);/* 将记录 a 原始值的变量 temp,赋值给 b,实现 a 向 b 转换 */printf("%d\n",result);return 0;
}
1.这里在程序的main()函数中地行序号11那里单机鼠标打出了一个断点,进行单步调试

2.点击下面有一个小虫子的按键,选择里面的watches,可以输入需要检查的变量值的变化情况,至于这里为什么叫它小虫子,大家也可以去查查看其中的故事。


选中里面的watches,在里面可以手动输入变量名称,用于显示,我这里输入了a,b,temp还有result,下面看看调试过程中发生了什么。

3.点击这里的红色三角形开始调试(这里会弹出黑框框,不用管它)


这时注意观察之前定义的所有变量在watches小窗口中都有了一些值,这些值都是之前的旧值,还没有在这个程序中更新。同时在程序中有了一个黄色的小标识,用于显示当前程序已经执行在什么位置了。

4.这里先介绍一下这几个常用的功能键:①是用于开始调试;②是用于逐行执行,也就是黄色的小标识会跑到下一行;③是用于进入函数体,如果直接逐行执行则不会进入到其他函数中;④和③相反,从函数体中退出来,回到main函数继续执行。其他按键自己有兴趣可以去查查资料,这里就不讲了,①旁边的那个在多行调试中会用到。

5.下面先单击二号按键逐行调试,注意观察变量值的变化,当执行到result = max(a,b);这里时,可以看见a,b的值已经显示出来了

6.下面单击三号按键,进入到max函数里面看看,随着在max函数里面的单步调试,最后可以发现temp最后将最大的值:4,成功地带出了函数体送给了main函数地result变量。

7.最后执行打印语句,就可以在黑框框里面看见输出显示4了。

一般都是在程序编译的时候没有报错,结果执行却发生了意想不到的问题,这个时候就可以使用调试程序,找到程序究竟在什么位置出现了问题。会调试程序找到错误所在也是一种非常重要的编程技能哦!

C语言简单的单步调试相关推荐

  1. Atitit. 脚本语言的断点单步调试的设计与实现 attialx 总结 php 参照java

    Atitit. 脚本语言的断点单步调试的设计与实现 attialx 总结 php 参照java 1. 断点的实现:手动断点 die和exit是等价的 1 2. 变量表的实现 1 3. print_r( ...

  2. keil无法单步c语言,在keil单步调试的时候,总调试进不了头文件(单步),直接嗖的一下就飞到了函数末尾...

    最近有个项目,在keil单步调试的时候,总调试进不了头文件(单步),直接嗖的一下就飞到了函数末尾,于是找了个别人写的,在实物上验证过的程序,发现也一样进不了头文件,源文件如下, 按十六个健   依次显 ...

  3. gdb tui 安装_GDB 单步调试汇编

    之前在看汇编的时候一直是肉眼看GCC -S的结果,缺点是很不直观,无法实时的看到寄存器的值,所以研究了下如何用GDB调试汇编.当然,写这篇文章更重要的一个目的是半年没有写博客了,博客要长草了.^_^ ...

  4. kiel实现c语言编程,Kiel 软件的使用和简单C程序调试

    <Kiel 软件的使用和简单C程序调试>由会员分享,可在线阅读,更多相关<Kiel 软件的使用和简单C程序调试(15页珍藏版)>请在人人文库网上搜索. 1.单片机原理与接口技术 ...

  5. 【VS 2017 C语言 汇编语言】如何使用VS 2017,通过反汇编查看C语言代码对应的32位x86汇编语言 VS 2017单步调试的使用

    0 前言 本文适用于VS的大多数版本,本文以VS 2017为例进行讲解. 1 编辑C语言代码 首先,在VS编译器中,创建项目,敲一段C语言代码,这个过程不解释了,如果不会请百度. #include & ...

  6. C语言简单程序的编写和调试,上机1--C语言简单程序的编写和调试.doc

    上机1--C语言简单程序的编写和调试.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印 ...

  7. 通过一个简单的例子,了解如何单步调试 Cypress 代码

    使用下列程序进行说明: /// <reference types="Cypress" />describe('My First Test', () => {it( ...

  8. C语言写个简单的串口调试助手

    学习单片机或者嵌入式编程常常要用到超级终端–串口调试助手,但有时需要我们自己做一个终端,用来当上位机.最近课设要求我们自己写个终端来处理串口信息,于是乎,接触了一些windows的串口API,做出了一 ...

  9. linux下gdb单步调试

    用 GDB调试程序 GDB 概述 ---- GDB 是 GNU开源组织发布的一个强大的 UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像 VC. BCB等 IDE的调试,但如果你是在 ...

最新文章

  1. linux shel的学习网站(推荐)
  2. C语言用递归函数求1累加到100求和
  3. WPF中的容器控件——canvas
  4. Bootstrap页面布局14 - BS按钮群组
  5. 中秋祝福网页_中秋客户维系关怀,该送客户什么礼品?
  6. form必填默认校验_Salesforce LWC学习(十六) Validity 在form中的使用浅谈
  7. python怎么启动服务器_如何在Python单元中从命令行启动服务器
  8. thinkcmf5调用指定分类的二级_python机器学习API介绍11: 伯努利贝叶斯分类器
  9. selinux --chcon命令
  10. python 指定时间内_python获取指定时间段内的随机不重复的时间点
  11. 虚拟机常见的几种上网方式
  12. 外企常用英语词汇或短语
  13. 485通讯问题及解决调试方案提炼
  14. 飞书小程序和微信小程序的调试
  15. win10怎么在网络里查看win7计算机,win10看不到win7共享电脑怎么办_win10共享发现不了其他电脑的解决方法...
  16. Python中len的使用方法
  17. 高效人士的七个好习惯
  18. Houdini粒子随机大小每帧变化问题
  19. 搭配安卓手机领夹式麦克风的PD快充方案来了LDR6023C 分享给大家
  20. 十大跑步运动耳机品牌有哪些,质量比较好的运动耳机品牌推荐

热门文章

  1. matlab条件语句怎么写,matlab条件语句怎么写
  2. 湖北轻工职业技术学院计算机分数线,湖北轻工职业技术学院录取分数线2021是多少分(附历年录取分数线)...
  3. “华尔街之狼”:ICO是“史上最大骗局”
  4. 网络数据传输安全性问题和常见的网络攻击
  5. orb-slam2代码详解之system
  6. 大水题--健康的荷斯坦奶牛
  7. [歪谈]员工(人才),留得住是由于本身就留得住;留不住的,你永远留不住
  8. 117_qt制作mplayer音乐播放器,BUG总结
  9. B. Bright, Nice, Brilliant codeforces 1734B
  10. 多个PDF合并成一个后大小不一致?教你一招