Win10环境下 dev c++的 调试问题

身为一个计科专业的学生,我不得不羞耻地承认,在我接触C语言的两年时间中,竟然不会使用dev c++进行代码的调试。因此,准备着手练习算法和数据结构的我,不得不硬着头皮开始继续研究,怎样在Win10环境下 完成dev c++的调试。
在一遍又一遍的奇怪显示下,我终于实现了用dev c++调试C语言代码的功能。下面将我在这一过程中遇到的情况以及解决方法进行总结,希望对 调试 同样一脸蒙圈的你会有帮助

用一个简单的代码段来先做一个示范吧:
输出hello world!

#include<stdio.h>
#include<string.h>
int main()
{
int length;
char a[20]={“hello world!”};
length=strlen(a);
int i;
for(i=0;i<length;i++)
printf("%c",a[i]);
return 0;
}

基本操作----dev c++的调试前提

1、首先,确定调试的是TDM-GCC 4.9.2 64-bit Debug.
如图


2、一定确保是在完成编译的前提下进行的调试。
因为 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。 所以只有编译过之后在可以i被计算机识别,才可以进行程序的调试。
3、很重要的一点:打开 工具---->编译器选项---->代码生成/优化---->连接器---->将“产生调试信息”选项改成“YES”。
在这里插入图片描述

常规的调试步骤

操作用到的框
在这里插入图片描述

1、断点设置
如果要在某行的代码处设置断点,则只需要在该行代码的行首出,用鼠标左键点击行标号数字即可。如果该行代码的底色变成红色,则说明断点设置成功,进入debug状态。
如下图:

断点设置成功
2、运行
点击页面下方方框中的“调试按钮”,页面会闪现一个输入框(黑框,就是平时运行时的框)。因为我设置的简单程序不需要输入信息,所以不用管这个黑框。如果你在 调试时,你的程序需要 输入信息,那么,此时输入信息,并且点击回车即可。
在黑框缩小之后(如果需要输入数据,就先输入,在缩小黑框),你会发现,页面发生了变化。即,将要执行的语句会底色变成蓝色(如果断点加在输入语句上,那么是输入语句的下一句变成蓝色,因为输入语句已经执行过了,下一句将要执行。 其他情况下,断点所在语句背暂时被蓝色底色覆盖,但是随着语句的执行,你会发现,断点所在语句的红色底色不会消失,因为红色的底色标明的就是断点位置,之前只是被短暂覆盖了)。
在这里插入图片描述
在这里插入图片描述

注:(1)如果在这过程中,出现问题,操作为:停止执行---->取消断点---->重新编译---->设置断点---->调试
(2)如果是断点设置在输入信息的地方的话,可以选择在黑框第一次闪现/弹出时输入,或者第一次点击“下一步”之后输入,二者略微不同:
在黑框第一次闪现/弹出时输入。此时输入语句如果是蓝色底色,表明输入语句还没有执行,输入的信息暂时不会有反应,会等到该句执行结束以后被读入。
第一次点击“下一步”之后输入。这个时候已经执行过输入语句,所以输入的信息会被直接读入计算机。
(3)如果设置断点的地方,在输入语句的后方,就不影响,输入的信息会直接被计算机读入。
3、单步执行(调试框中的“下一步”)----不进入被调函数中
在上一步结束之后,点击调试的大框中
在这里插入图片描述
(这个框)
的添加查看,添加你想要在程序运行中,改变你的变量。
查看变量的位置是编译器左侧框,记得把“调试”项放在首页面
在这里插入图片描述
因为我设置的,需要查看的变量是i,j。但是代码中没有j,只有i。所以i处显示的是正确的变量变化,j处会有提示:not found in current context,即在当前中没有找到该变量。
注:如果提前设置了要查看的变量,会显示execute to evaluate,但是,进入调试以后就会正确显示。

调试框中功能的使用

1、“单步进入”----在语句中遇到函数调用时则进入该调用的函数逐步执行。
2、“跳出函数”----在“单步进入”后进入函数逐步执行时,点击“跳出函数”则执行完当前函数的所有操作,并返回到调用该函数的语句。
3、“下一条语句”----在汇编代码就可以看到,是逐句执行汇编代码。
4、“进入语句”----也是在汇编代码中可以看到,也是逐句执行汇编代码。但是他与“ 下一步语句 ”区别是,下一条语句不会进入到系统调用,比如标准库的汇编代码,但是 “进入语句 ”会进入标准库的汇编代码。
更多的使用可以参考:
百度百科----Dev-C++的使用及调试

注:调试指针时,会出现一些问题:
(1) 查看指针指向的变量的值的时候,按 F4,然后输入星号及指针的名字(如 pointer)。 如果没加 “”,看到的将会是一个地址,也就是该指针的值。
(2) 有时,可能识别不出来某个指针的类型,从而不能显示该指针指向的变量的值。需要手动输入该指针的类型。按 F4 后,以 *(type )pointer 形式输入。例如,(int *)pointer。

Win10下的调整

菜单栏---->工具---->编译器选项---->编译器,进行以下操作:第一栏输入:
-std=c++11
并且,将第一栏打上“对勾”
第二栏:
-static-libgcc(已有,不用再输入)
最后点击“确定”即可。

出现这种情况,是因为:Dev-C++ 不支持 C++11新特性。

注:如果调试结束之后,出现:
在这里插入图片描述

则,应该将刚才设置的第一栏:-std=c++11处的“对勾”取消即可。有时候并不会出现警告。

  • 32
    点赞
  • 154
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值