C 程序调试(Dev C++版)

当 C 语言程序能够正常编译并运行,但可能结果可疑或不对时,即,当程序没有语法错误而可能有逻辑错误时,就需要考虑使用调试 Debug功能来找出程序的 bug。
在调试过程中,可以让程序运行到设置好的断点处并暂停下来,然后通过观察相关的变量值是否正确,来判断程序的逻辑错误可能出现在哪里。
本文以 Dev-C++ 5.11 开发环境为例来说明 C 语言的调试方法。
  • 准备工作

菜单:工具/编译选项
Tools/Compiler Options
在“设定编译器配置” Compiler set to configure中选择“TDM-GCC 4.9.2 64-bit Debug”。
提示:
如果是 32 位的系统,请选择“TDM-GCC 4.9.2 32-bit Debug”。
在下方的“编译器” General选项卡中,勾选“编译时加入以下命令:” Add the following commands when calling the compiler:,并在其中输入“-g”。如上图所示。
确定退出后,可在软件界面右上角看到或选择用于调试的编译器。
  • 设置断点

断点 breakpoint,指的是在调试过程中程序运行到此行代码前会临时停下,以便观察此时的某些变量值。
可通过点击代码左侧的行号来设置断点。
或在某行代码上右击,选择“切换断点” Toggle Breakpoint。
或者使用快捷键:F4。
同样的方法也可用于取消断点设置。
断点设置建议:
设置在 scanf 等输入语句的下一行,以观察数据是否被正确获得。
设置在循环语句的下一行,以观察循环控制变量在循环结束后的值,或者为了避免调试过程中在循环语句段反复点击“下一步”按钮。
设置在函数调用语句的下一行,以观察函数返回的结果值是否正确。
  • 开始调试

在开始调试前,一般要先编译。
菜单:运行/编译
Execute/Compile
快捷键:F9
确保没有语法错误之后,再开始调试。
菜单:运行/调试。
Execute/Debug
快捷键:F5
或者,点击工具栏上的“✔”按钮。
  • 添加查看

开始调试后,代码将按照常规顺序依次运行。执行到第一个断点时,才临时停止,红色行变成蓝色行,代表即将要执行的代码行。
此时,可将鼠标指针悬浮于某个变量之上,以查看此时该变量的值。
提示:
对于字符变量,会同时显示字符的 ASCII 码值。
或者,在变量上右击,选择“添加查看” Add watch,会自动将此变量添加到左侧的调试 Debug面板中,以便后续跟踪查看。
提示:
在变量名上双击,可精准选中变量。
或者,点击左下方的“添加查看” Add watch按钮,手动添加要查看的变量。
  • 继续或停止调试

可以使用相关按钮继续调试工作。
下一步 Next line按钮
运行下一行代码。如果下一行代码是对函数的调用,不进入函数体。
快捷键:F7
类似于 Turbo C++ 中的“Step Over”。
跳过 Continue按钮
直接运行到下一个断点处。
单步进入 Into function按钮
运行下一行代码,如果下一行是对函数的调用,则进入函数体内逐行运行。
快捷键:F8
类似于 Turbo C++ 中的“Trace”。
跳过函数 Skip function按钮
当在函数内部时点击此按钮,将直接运行到函数结束,并返回到函数调用处。
停止执行 Stop Execution按钮
停止调试,清除所有添加好的查看 watch。
快捷键:F6
说明:
下一条语句 Next instruction按钮和进入语句 Into instruction按钮,常结合CPU窗口查看并执行指令。一般的调试工作中可以不用。
“有钱的捧个钱场,好看的点下在看”
(0)

相关推荐

  • (2条消息) Anaconda中的Spyder进行断点调试

    作为一个入门的算法工程师,你是不是在每一次出bug后,都要重新运行整个程序,查看是否报错呢? 实际上,在anaconda中有一排类似绿色运行标志的蓝色标志(如下),机智的你可能已经猜到了. 对,这就是 ...

  • (2条消息) 使用spyder3调试python程序的简明教程

    说是简明教程,其实是我自己尝试用spyder调试python程序的过程的一个记录,因为spyder的调试功能是基于pdb,而我又没有pdb的基础,所以刚开始上手时感觉很不习惯,而且那时我又很懒,没去找 ...

  • Android应用程序----程序调试(2)

    Android应用程序----程序调试(1) 添加过滤器 单击"+" 填入过滤器的名称:LogcatFilter 设置过滤条件为"标签=LOGCAT" LogC ...

  • Android应用程序----程序调试(1)

    Android系统提供了两种调试工具LogCat和DevTools,用于定位.分析及修复程序中出现的错误 LogCat LogCat是用来获取系统日志信息的工具,并可以显示在Eclipse集成开发环境 ...

  • 程序调试

    简介 本篇讲解在Idea中如何进行Debug. 程序调试 什么是程序Debug? Debug是程序开发人员必备的调试程序技能. 在企业中程序开发和程序调试的比例为1:1.5,是必须要掌握的技能. De ...

  • 愤怒的小鸟2游戏小程序:愤怒的小鸟经典版游戏来袭!点开既玩

    40000+游戏爱好者已加入我们! 每天推荐好玩游戏! 加入我们,沐沐带你发现好游戏! <愤怒的小鸟经典版>游戏小程序好玩吗? <愤怒的小鸟经典版>小游戏怎么玩? 只有你想不到 ...

  • C入门篇(十),更快更好地完成程序调试

    https://m.toutiao.com/is/JT3vXKn/ 当我们按照自己的思路编写好一个完整的程序,就要对它进行调试(debug)了,调试过程包括我们熟悉的编译和连接,还包括运行和简单的数据 ...

  • 钢筋工程监理检查验收程序与要点word版63页符合16G101()

    工程实战参考来源:网络版权归原作者所有,侵删文末有下载方式工程人,这5个优质实战公众号必须关注!一.钢筋原材料的进场验收二.钢筋加工三.钢筋焊接四.钢筋现场安装.绑扎附:标准图集上部分常用节点及构造做 ...

  • 利用vs2019编译器远程调试linux程序(走心版)

    前段时间,参与了公司一个项目,需要开发linux服务程序,因为之前没接触过,对shell.GDB.makefile不熟悉,项目要的又紧,所以决定使用更为熟悉的vs编译器来远程调试linux程序,等有时 ...

  • Delphi应用程序的调试(四)The Debug Inspector

    调试检查器(The Debug Inspector) Debug Inspector使用户能查看诸如类和记录的数据对象,也可以用它来查看整数.字符数组等简单数据类型,但这类简单数据类型最好是用Watc ...

  • Delphi应用程序的调试(三)监视变量

    监视变量(Watching Variables) 当程序停在一个断点处时,用户做些什么呢?通常用户在断点处停下来是要检查变量的值,某个变量的值是否与预料的取值相同?或者某个变量取什么值(事先并不知道这 ...