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++ 给程序设置断点的方法很简单,想在哪一行代码处暂停执行,直接单击代码所在行的行号即可。例如:
在这里插入图片描述

图 1 Dev C++添加断点

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

在这里插入图片描述

图 2 调试程序

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

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

在这里插入图片描述

图 3 断点发挥作用

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

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

在这里插入图片描述

图 4 添加要监控的变量

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

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

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

在这里插入图片描述

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

Dev C++调试注意事项
对于修改后的程序,调试程序之前一定要先编译程序。

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

举个例子,某些版本的 Dev C++ 调试 C++ 程序时,遇到 endl 会出现“卡死”的情况,无法继续调试程序。遇到这种情况,比如容易的解决方案是:将 endl 用 ‘\n’ 替换,就可以解决这个问题。
————————————————
版权声明:本文为CSDN博主「小熊coder」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41854911/article/details/121719507

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值