Dev C++调试程序方法详解

2023-05-16

分享一篇站长的关于调试的文章:Dev C++调试程序方法详解
Dev C++算是兼容性很好使用很方便的IDE了,记录一下调试方法,以备不时之需。

所谓调试程序,就是控制编译器一行一行地执行代码,过程中可以清楚看到每个变量值的变化情况、函数的调用过程等,进而发现程序中隐藏的错误或者低效的代码。

作为一款免费、开源的 C/C++ IDE,Dev C++ 内嵌 GCC 编译器和 GDB 调试器,既能编译、运行程序,也能调试程序。本节,我们以一段完整的 C 语言程序为例,系统地学一下如何用 Dev C++ 调试程序。

#include <stdio.h>
int add(int a,int b){
    int c = a+b;
    return c;
}
int main(){
    int a=10,b=20;
    int sum = add(a,b);
    printf("sum = %d",sum);
    return 0;
}

Dev C++调试程序

默认情况下,程序会瞬间从开头执行到结尾,除非中途出现错误(称为“运行时错误”,比如读写内存失败、数组越界等)。要想让程序暂停执行,就需要设置一个断点。

所谓断点(BreakPoint),可以简单地理解成障碍物,汽车遇到障碍物不能通行,程序遇到断点就会暂停执行。Dev C++ 给程序设置断点的方法很简单,想在哪一行代码处暂停执行,直接单击代码所在行的行号即可。例如:

img
图 1 Dev C++添加断点

如上图所示,我们成功地在第 7 行代码处添加了一个断点。注意,以正常方式点击“编译运行”按钮(快捷键是 “Fn+F11”)运行程序,断点是不会生效的,只有点击“调试”按钮(快捷键是 Fn+F5)运行程序时才有效。

img
图 2 调试程序

注意,只有在“Debug”模式下才能使用调试功能,如图 2 所示,本节选用的是“TDM-GCC 4.9.2 64-bit Debug”模式。

点击“调试”按钮,或者按下快捷键“Fn+F5”,程序开始执行,直到第 7 行代码处(当前行代码尚未运行)暂停,如下所示:

img
图 3 断点发挥作用

当程序暂时执行时,借助调试窗口中的按钮可以查看某些变量的值,还可以控制编译器继续往下执行程序。整个调试窗口中,常用的按钮以及含义分别是:

  • 添加查看:查看某个变量的值,还可以看到值的变化情况;
  • 下一步:控制编译器向下执行一行语句;
  • 单步进入:功能和“下一步”按钮类似,不同之处在于,当程序中调用某个自定义的函数时,此按钮可以进入到函数内部,继续调试函数内部的代码,而 “下一步” 按钮不会;
  • 跳过:继续执行程序,遇到下一个断点暂停执行;
  • 停止执行:停止调试程序。

举个例子,点击“添加查看”按钮监视变量 sum 值的变化情况,添加之后如下图所示:

img
图 4 添加要监控的变量

初始状态下,变量 sum 的值为 0。点击“下一步”,执行第 7 行代码,箭头光标指向第 8 行,变量 sum 的值仍为 0。再点击“下一步”,执行第 8 行代码,箭头光标指向第 9 行,变量 sum 的值变为 30。

当箭头光标指向第 8 行代码时,点击“单步进入”按钮,箭头光标会进入 add() 函数并指向第 3 行代码,感兴趣的读者可自行尝试。

调试过程中,Dev C++ 支持同时监控多个变量,还支持在程序中设置多个断点,如下图所示:

img
图 5 多个断点和监控多个变量

Dev C++调试注意事项

对于修改后的程序,调试程序之前一定要先编译程序。

目前,多数人使用的都是 Windows 10 操作系统,但遗憾地是,即便是最新版本的 Dev C++(目前的最新版本是 5.11),在 Windows 10 上的兼容性并不好,有时会出现各种奇葩的问题。

举个例子,某些版本的 Dev C++ 调试 C++ 程序时,遇到 endl 会出现“卡死”的情况,无法继续调试程序。遇到这种情况,比如容易的解决方案是:将 endl 用 ‘\n’ 替换,就可以解决这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dev C++调试程序方法详解 的相关文章

随机推荐

  • 【C/C++服务器开发】具备丰富功能和可以同时响应多个客服端的服务器

    文章目录 一 前言二 功能更加丰富的服务器三 让服务器可以同时响应多个客户端请求1 单线程 进程2 多进程并发父进程 xff1a 子进程 xff1a 3 多线程并发主线程 xff1a 子线程 xff1a 四 技术准备 一 前言 往期博客回顾
  • 【LeetCode刷题日记】[859. 亲密字符串]

    C 43 43 span class token keyword class span span class token class name Solution span span class token punctuation span
  • C++中原生数组、STL的vector、STL的array的区别

    文章目录 一 数组一维数组一维数组初始化一维数组元素的引用 二 STL的arrayC 43 43 STL array随机访问迭代器 xff08 精讲版 xff09 begin end 和 cbegin cend rbegin rend 和
  • Docker 入门教程

    推荐两篇阮一峰老师的文章 xff0c 网上看了很多Docker教程 xff0c 发现还是这个让我理解了什么是Docker xff0c 怎么用Docker Docker 入门教程 Docker 微服务教程 再放一个比较全的Docker教程 x
  • 【C/C++服务器开发】中间件的含义及常用中间件介绍

    文章目录 一 中间件的定义中间件一词的由来中间件的定义什么不是中间件评判关键中间件的好处中间件分类常用基础中间件中间件云产品 二 中间件的开发什么是中间件开发 xff1f 中间件开发人员需要哪些素质 xff1f 如何成为中间件开发人员 xf
  • source insight查看函数调用关系(总结全网资料)

    有时候我们去查看一个项目的源代码时 xff0c 一般都会想先知道函数之间的调用关系 xff0c 之前一般都是自己在笔记本上画出来 xff0c 但这是一个效率很低的方法 xff0c source insight提供了查看函数调用关系的功能 因
  • C/C++字符串基础,类型,使用方法大全(字符,字符串,字符数组,字符串函数,C++ string)

    文章目录 一 前言二 C C 43 43 字符串1 字符字符的表示字符的输出字符与整数 2 字符和字符串编码源文件使用什么编码窄字符串使用什么编码总结 3 ASCII编码了解对控制字符的解释 4 C语言转义字符5 在C语言中使用中文字符中文
  • Redis基础,Linux下安装Redis和hredis,C++调用Redis,Redis中字符串设计

    文章目录 一 Redis是什么Redis架构Redis优势Redis应用场景 二 Linux下载安装Redis xff08 Ubuntu系统 xff09 了解Redis版本在线安装Redis启动Redis服务端启动Redis客户端验证是否成
  • Redis数据结构

    昨天刚写了一个Redis的文章之后 xff0c 后面发现了一个大佬写了一篇关于Redis数据结构的文章 推荐一些 xff1a 为了拿捏 Redis 数据结构 xff0c 我画了 20 张图
  • Redis配置项汇总(超级详细)

    文章目录 查看配置项更改配置项更改配置文件配置项说明基本配置主从服务配置安全配置限制配置AOF日志模式慢查询配置服务端命令客户端命令连接命令 在 Redis 的安装目录中有一个名为 redis windows conf 的配置文件 xff0
  • navicat查看保存的密码

    参考 xff1a 查看Navicat保存的密码 Micky233 博客园 cnblogs com https www cnblogs com geek233 p 16772618 html
  • Redis常用命令及C/C++调用Redis接口详解

    文章目录 一 Redis常用命令启动Redis服务端启动Redis客户端Redis常用命令详解键 xff08 Key xff09 命令Hash 命令String 命令List 命令Set 命令Zset 命令 二 C C 43 43 调用接口
  • Redis数据结构2

    继续放一下小林coding的文章 xff1a 为了拿捏 Redis 数据结构 xff0c 我画了 40 张图 xff08 完整版 xff09
  • Redis博客、教程学习资料汇总(持续更新)

    在这篇博客中 xff0c 总结一下写过的博客和一些好的学习资料 博客 xff1a Redis基础 xff0c Linux下安装Redis和hredis xff0c C 43 43 调用Redis xff0c Redis中字符串设计 Redi
  • memcached在linux上的安装,C/C++调用memcached,memcached与Redis的区别

    文章目录 一 memcached在linux上的安装安装 Memcached自动安装源代码安装 Memcached 运行 xff08 1 xff09 作为前台程序运行 xff1a xff08 2 xff09 作为后台服务程序运行 xff1a
  • 【C/C++服务器开发】事件驱动、事件驱动架构、事件驱动编程及设计模式

    文章目录 一 事件驱动二 事件驱动编程事件驱动和异步IO看图说话讲事件驱动模型 三 C C 43 43 实现事件驱动四 常用的C C 43 43 事件驱动库 一 事件驱动 首先我们来看看百度百科的介绍 所谓事件驱动 xff0c 简单地说就是
  • VxWorks消息队列详解

    文章目录 一 前言二 VxWorks消息队列模块详解三 代码实例 一 前言 最近看了点事件驱动编程 了解到在时间驱动编程中 xff0c 重要的是一个事件收集器 一个事件发送器和一个事件处理器 这让我联想到VxWorks中的消息队列 xff0
  • VxWorks/tornado中怎么调试及WindSh常用命令行详解

    一 调试 VxWorks5 5 tornado2 2作为一款极为远古的嵌入式实时操作系统和IDE xff0c 软件的界面和功能都是极为原始的 在这种情况下 xff0c 如果我们要对软件进行调试该怎么操作呢 xff1f tornado调试分为
  • 如何长期输出优质内容?我是如何做到的?

    分享一篇站长的文章 xff1a 如何长期输出优质内容 xff1f 我是如何做到的 xff1f 创业 7 年时间里 xff0c 我一直在运营C语言中文网 xff0c 创作和参与了 40 多套编程教材 xff0c 累计阅读人次超过 2000 万
  • Dev C++调试程序方法详解

    分享一篇站长的关于调试的文章 xff1a Dev C 43 43 调试程序方法详解 Dev C 43 43 算是兼容性很好使用很方便的IDE了 xff0c 记录一下调试方法 xff0c 以备不时之需 所谓调试程序 xff0c 就是控制编译器