Codeblocks17.12编译器的Debug教程
本文会介绍Codeblocks17.12的调试方法,所用的示例程序如下,它的功能是判断输入的数是否为素数。就这个简单的程序而言,完全没必要把判断操作放在一个自定义的函数中,但是本文为了演示某些调试功能,因此采用了这种写法。
#include<stdio.h>
#include<math.h>
bool IsPrime(int n)
{int t = sqrt(n);for(int i = 2; i <= t; i++){int r = n % i;if(r == 0)return false;}return true;
}
int main()
{int i, n;bool prime;scanf("%d",&n);prime = IsPrime(n);if (prime == false)printf("不是素数\n");elseprintf("是素数\n");return 0;
}
前期准备
双击运行Codeblocks,进入起始界面。单击界面中间的Create a new project,如下图所示。
在新弹出的界面中选择Console application,也就是控制台应用程序,俗称小黑框,然后单击Go。
单击Next。
让你选择编程语言,选择C和C++都可以,我这里用的是默认语言C++。
先为项目起名(不要包含中文),再选择存储路径(不要选择含有中文的存储路径),最后单击Next。
使用默认配置即可,单击Finish。
此时项目就已经创建成功了,下图中我用矩形框圈起来的部分称为项目管理器。
在项目管理器中单击Sources左侧的加号,以展开所有的源文件。
此时会看到一个名为main.cpp的文件,双击以打开这个文件。
现在可以在界面的中间看到main.cpp里面的内容了,以后写代码时,也是在这个文件中写。
把上面求素数的代码复制粘贴到main.cpp的编辑框中。
如果之前没有用Codeblocks进行过调试,需要先设置一下才能继续进行。首先点击菜单栏的Settings,然后点击Debugger。
先点击Default,然后在Executable path中选择你安装路径下的
MinGW\gdb32\bin\gdb32.exe
文件。比如我的安装路径是E:\CodeBlocks
,那么我此处就应该为E:\CodeBlocks\MinGW\gdb32\bin\gdb32.exe
。可以直接将gdb32.exe的路径输入到文本框中,也可以单击文本框右侧的按钮来选择gdb32.exe,更推荐后者,这样不易出错。如果不知道自己当时把Codeblocks安装在什么位置了,可以点击此处查看。
开始调试
与调试有关的按钮都在菜单栏的下方,在下图中已经用矩形框圈起。
下图中的1号按钮可以开始调试,并且运行到断点处暂停运行,此时它叫Debug
,如果在调试过程中点击此按钮,则会一直运行到下一个断点处停下,此时它叫Continue
,快捷键是F8。
2号按钮会执行下一行代码并暂停运行,也就是能够单步执行,名称为Next line
,快捷键是F7。
3号按钮会进入到函数中单步执行,名称为Step into
,快捷键是Shift+F7。
4号按钮可以从函数中跳出,名称为Step out
,快捷键是Ctrl+F7。
5号按钮停止调试,整个程序的执行也会被终止,名称为Stop debugger
,快捷键是Shift+F8。
在编辑框的行号右侧单击会出现一个红点,它就表示断点,在调试时,程序运行到此处会暂停下来。再单击一下红点,它会消失,这表示取消断点。除了可以用点击的方法设置断点外,也可以将光标定位到你想要设置断点的那一行,然后按F5设置断点,再按一次取消断点。下面以第19行和第24行的断点为例,演示调试过程。
按照上图设置好断点后,按快捷键F8或者点击下图中圈起来的Debug
按钮,让程序进入debug模式。
这时会弹出控制台窗口(小黑窗),我们观察断点设置的位置,发现它是在scanf
函数之后的,也就是说只有当输入一个数字之后,程序才会执行完第18行代码,然后才能停止在第19行代码处。随便输入一个数,我输入的是数字7,然后按回车,再将控制台窗口最小化。
如果你的电脑也出现了下图所示的提示窗,勾选Don’t annoy me again!后,点击Yes。
现在可以在第19行右侧看到一个黄色的三角箭头,如下图所示,它表示程序在第19行代码处暂停运行,等待下一步调试操作。请注意,此时第19行代码尚未执行。
现在按F7或点击下图中圈起来的Next line
按钮,程序会执行第19行代码,并且在第20行代码处停下来。
下图所示为程序在第20行代码处暂停运行,可以看到行号20的右侧有一个黄色的三角箭头。
现在如果继续按F8或Continue
按钮,程序会暂停在第24行,也就是暂停在下一个断点处。
此时如果已经知道了问题所在,不想继续调试了,那么可以按快捷键Shift+F8或者点击下图圈起来的Stop debugger
按钮,就可以结束调试。
现在演示其它按钮的功能,所以再按F8或点击Debug
按钮,以使程序进入调试状态。
依次点击View->Perspectives->GDB/CDB debugger:Default
现在会弹出一个Watches窗口,如下图矩形框内所示。
将其拖拽到左侧的项目管理器。
现在程序还是暂停在第19行代码处(并未执行第19行代码),仔细观察此行代码,可以发现这行代码调用了IsPrime
函数,如果想看一下这个函数的执行有没有错误,应该怎么办呢?可以按快捷键Shift+F7或者点击下图圈起来的Step into
按钮,以进入这个函数。
可以看到,现在程序进入了IsPrime
函数,并且暂停在了第5行。
可以在这个函数中按F7单步执行,以查看这个函数是否有错误。当然,能进来,也会有出去的方法。可以按快捷键Ctrl+F7或点击下图圈起来的Step out
按钮,以退出这个函数。
退出之后,程序仍然暂停在第19行。
可以按F7单步执行下一行代码,因为我输入的数是7,它是素数,所以可以看到prime变量的值发生了改变。刚打开Watches窗口时,prime变量的值是false,至于为什么是false,这是因为系统会自动为其初始化。
在实际的调试过程中,通常是一边使用上面所说的调试方法,一边观察变量的值,从而找出自己代码中的逻辑错误。一般来说,在程序中定义的变量,都会在Watches窗口中显示出来,如果你想查看的变量没在Watches窗口,这时可以手动将其添加上。
假如说变量n的值没在Watches窗口中,这时可以单击下图矩形框圈起来的位置。
输入n,按回车,就可以显示n的值了。
查看Codeblocks安装目录的方法
在桌面找到CodeBlocks的快捷方式,然后右键单击。
在弹出的列表中选择最后一项“属性R”。
在弹出的属性窗口中,可以看到目标(T)是E:\CodeBlocks\codeblocks.exe
,那么说明Codeblocks的安装目录是E:\CodeBlocks
。
Codeblocks17.12编译器的Debug教程相关推荐
- 使用Xcode 4编译器设定Release/Debug教程
使用Xcode4编译器设定Release/Debug教程是本文要介绍的你内容,主要是来学习xcode 4的相关内容,让我们更一步的去熟悉.了解xcode 4,内容不多,不过真的可以帮助友们去解决xco ...
- CodeBlocks17.12+汉化包下载及用法
1. 关键词 CodeBlocks最新版17.12云盘下载链接 CodeBlocks安装教程 如何设置cbp文件默认用CodeBlocks打开 Codeblocks汉化包下载和汉化包使用教程 Code ...
- 20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)
20172319 2018.10.12 <Java程序设计教程>第6周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...
- Java断点调试 idea断点调试 debug教程
IDEA断点调试 Java程序断点调试 文章目录 IDEA断点调试 Java程序断点调试 前言 一.什么情况下需要debug 二.使用idea如何进行debug 三.假设案例分别进行debug教程 1 ...
- KDevelop详细Debug教程
KDevelop官方连接:https://www.kdevelop.org/ 感觉网上对KDevelop的使用介绍比较少,也没有一个完整的Debug教程,这里记录一下我的踩坑过程.当然首先你需要有一个 ...
- Android 10.0 11.0 12.0 启动模拟器教程
<<返回总目录 Android 10.0 11.0 12.0 启动模拟器教程 一.android 12.0 模拟器 二.安装android 10.0 11.0 12.0 SDK平台 三.创 ...
- Navicat Premium For Mac 12.0.2x 破解教程
本教程最高只支持Navicat Premium For Mac 12.0.22版本,因为Navicat Premium For Mac 12.0.24已经没有了rpk文件文件,所以不能用次方法破解. ...
- Visual Studio Debug 教程 之 入门
在过去,我已经写过好几篇关于调试 / debug / 解 Bug 的文章,但都是从宏观的角度上去讲的,并没有针对哪种工具做具体深入的剖析. 工欲善其事,必先利其器,一个强大的调试工具可以帮助我们快速的 ...
- HP LoadRunner 12.02 Tutorial T7177-88037教程独家中文版
LoadRunner 12.02教程独家中文版 Tylan独家呕血翻译 转载请注明出自"天外归云"的博客园 Welcome to the LoadRunner Tutorial L ...
最新文章
- 百度CTO王海峰阐释AI融合创新,降低门槛,按下产业智能化加速键
- GPU信息查看以及确认Pytorch使用了GPU计算模块进行深度学习的训练
- Java经典编程题50道之十七
- python实现流媒体传输_基于OpenCV的网络实时视频流传输的实现
- c++17(2)-枚举类enum class
- Java异常日志的查询语句_java学习异常,断言和日志
- 第二章:图像处理基础
- php 匹配双字节字符串,收集一些常用的正则表达式(匹配中文字符、匹配双字节字符、匹配HTML标记、匹配空行 and so on~~~)...
- 手机uc新窗口打开的html标签,在电脑UC浏览器的新窗口页中如何打开书签
- Windows Server 2008 R2之三管理活动目录数据库
- mysql:赋予用户权限、查看及修改端口号
- httppost请求工具类
- 企业家的“智慧”和“仁人”
- linux heartbeat rpm,Heartbeat 3.0.3 介绍及rpm
- html excel导出的路径,html 导出多个excel表格数据-如何将html页面中的表格导出到excel表格...
- 想考阿里云ACE需要做什么准备?考下来难不难?
- Xu_Learning_to_Restore_Low-Light_Images_via_Decomposition-and-Enhancement_CVPR_2020_paper
- Android加载web页时有的手机会弹出手机自带的浏览器解决方法
- 数据库的主键约束和自增长
- 业务规则引擎:Code Effects 5.X Crack-New
热门文章
- 国家医保移动支付国密算法SM2签名验签、SM4加解密DLL
- CentOS 7安装Deluge 达到linux下载bt资源效果
- PCI、PCIe、Mini PCIe、SATA、mSATA、M.2
- 809数据结构141分,长春理工大学计算机考研 经验分享,
- Windows10 由家庭版升级到专业版
- 东软睿道培训费用python
- 青海大学昆仑学院计算机机考,青海大学昆仑学院英语六级考试报名入口2020年上半年...
- 阿里云安装 Redis ,win10使用RDM连接管理redis
- Raspi-config 设置解析
- 【深度干货】以最佳实践为石油石化数字化转型加油