Code blocks调试教程
特别声明:本教程已转移至百度经验:https://jingyan.baidu.com/article/6b182309939a87ba58e159bf.html
一、题外话
之前一直想用Code blocks调试程序,但是,尽管看了网上的各种教程,也照着做,但点着点着就发现和参考教程上的不一样了,然后出不来结果。于是屡试屡败。今天,又按照之前的做法(都记住步骤了,就知道我尝试过多少次了......)操作了一遍,竟然成功了。于是,基于已知的操作和网上搜索的结果,我初步掌握了如何使用这个调试工具,这里记下来,和每一位有需要的同行共享。
二、说明
本教程只限于使用Code blocks IDE编写“程序设计(ACM-ICPC等)”、“小游戏”等小程序。如果是要调试大的Project,烦请另请高明。
二、操作步骤
1、新建控制台程序(必须这么做。如果是先在文件系统中新建c/cpp文件,再用Code blocks打开的,那么就把待调试的程序代码复制到新建工程的main.cpp中。),命名为:debug4all(当然,名字可以任取。但是为了方便记忆,下次我们也用这个工程来debug其他程序嘛。)已经是工程的直接调到第二步。如果按照第二步之后的步骤操作之后没有看到效果,可能是这一步第三张图那里少选了什么,那么,请重新建立工程,从这一步开始走起。
这里全部都是默认,不用动。
2、编辑一段程序。(通常都是先有程序再debug的。所以,如果你是像之前说先建立c/cpp文件再用Code blocks打开后编辑代码的话,那就把要调试的程序代码复制到debug4all工程的main.cpp里面)。
、
3、下断点(断点就是程序执行到这里会停下来等你操作的地方)。这里假设这个程序有问题(没问题就不用调试了,对吧。),把断点下在第7行。具体操作为:鼠标左键点击一下行号(数字7)右边空白处,然后这里就会有一个红点。表示:程序执行完第6行,要执行第7行时,就停下来了。
4、点击上方的红色箭头指向的红色三角形。
5、点击后,会出现一个黑窗口,一闪而过。然后最小化在任务栏了。接下来,点击上面红色箭头所指处。选择,Watches。即:观察窗。注意是左边这个有个虫子的图标,不是右边那个有个感叹号的。
效果如下:
可以看到当前程序执行的函数里的所有的局部变量。注意哦,现在第7行还没有执行,所以,局部变量数组里面的值还是野生的(即不确定的)。要执行第7行的代码,点击上方红色箭头所指处。上面的每个各种方向的箭头代表什么意思,可查阅其他资料。其中:next line表示执行当前行,跳到下一行。step into表示,进入此条语句中(什么意思呢?如果这条语句是简单语句,那自然和next line效果一样,因为没什么好进去的。如果这条语句是调用某个函数,那就是进入到这个函数中。而如果点击next
line的话,这个函数就会立马执行完,然后跳到调用这个函数的那行的下一行)。
点击next line。如图。可以看到,第7行执行完后,变量loc_arr和sum的值都变了。
6、至此,你想要执行到哪一行,查看哪些局部变量的值都能做到了。但是,我们发现,这里不能查看全局变量的值,
怎么办呢?照着做。在观察窗口中,点击一行空的行,输入你要查看的全局变量的名字。点击第3列。
效果如下:
7、至此教程就结束了,现在就可以想怎么看就怎么看了。
PS:到目前为止,还没有哪个debugger可以做到回退一步的。
Code blocks调试教程的更多相关文章
- 在Code::Blocks中编译和使用wxWidgets3.0.0教程
跳转至:指南,搜索 注意,编译Code :: Blocks的对wxWidgets的3.0.0链接不是很稳定,但该库至少可以被正确编译,(只是使用的时候可能会有问题):CodeBlocks开发商都在 ...
- VC++6.0 IDE的工程用Code::Blocks来打开、编译、调试终极配置方案
本篇文章转自 CSDN blog,转载请注明出处! 原文地址: http://blog.csdn.net/liquanhai/article/details/6618300 引子:竟然可以用Code: ...
- Code::Blocks无法调试 Starting the debuggee failed: No executable specified, use `target exec'
1.必须建立工程 2.工程名不可有特殊字符或空格,可以有字母.数字.下划线 2.编译器设置里勾选-g(产生调试符号) 3.重新编译项目(如果之前编译过了) 4.调试器设置 > Default & ...
- Code::Blocks配置GTK+2和GTK+3
Code::Blocks配置GTK+2和GTK+3 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根 ...
- C语言工具---Code::Blocks
Code::Blocks Code::Blocks 是一个开源的全功能的跨平台C/C++集成开发环境. Code::Blocks是开放源码软件.由纯粹的C++语言开发完成,它使用了著名的图形界面库wx ...
- 关于Ubuntu12.04下code::blocks不能使用debug解决方法
问题描述: 系统:ubuntu 12.04 code::blocks版本:10.05 问题现象:debug->start 之后出现:warning: GDB: Fail ...
- linux下C/C++IDE比较——Code::Blocks
工欲善其事,必先利其器.用了这么久的linux,现在比较主流的几个C/C++的IDE基本已都用过了,现在来对他们做一下简单的比较. 1.VIM首先要说的是VIM.我认为,VIM只是一个编辑器,不能算是 ...
- Fedora Linux 下安装配置C开发环境Code::Blocks
一.提前的话要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便 ...
- Code::Blocks项目配置基础
File 菜单 New :新建( Empty file/file . class . project . build target ) . Recent projects/files :近期打开的项目 ...
随机推荐
- ftp上传下载记录
1,准备ftp环境 下载最新的ftp客户端:https://filezilla-project.org/ftp/001.png,选择linux下面的版本,如002.png所示: 在window10下面 ...
- java入门学习(4)— 类,对象理解,如何创建类,对象
1.什么是类?具有一定相同的属性的对象的集合就叫类.2.对象:类的具体实例,就是类的实例化.比如学生是一个类(student),那学生里面的小红就是一个对象,一个有学生的属性的对象.3.如何定义一个类 ...
- 正则 匹配 HTML 标签
var tt=((result.data).toString()).match(/<style(([\s\S])*?)<\/style>/g);
- jQuery扩展 模糊删除sessionStroage
$.extend({ removeStorageLike : function(name){ //模糊删除 for(var k in sessionStorage){ if(k.indexOf(nam ...
- python常用模块之random模块
python常用模块之random模块 在程序中很多会用到随机字符,比如登陆网站的随机验证码,通过random模块可以很容易生成随机字符串 1.random.randrange():返回1-10之间的 ...
- UDP:rfc768/广播和多播/IGMP
封装情况:
- 07----popo up 弹窗
弹窗: 绑定点击弹窗事件,js代码 弹出框的url设置 from django.forms.models import ModelChoiceField 进入ModelChoiceField 可看到 ...
- Mvc6 错误Microsoft.AspNet.Http.Features.IRequestIdentifierFeature
System.TypeLoadException 未能从程序集“Microsoft.AspNet.Http.Features, Version=1.0.0.0, Culture=neutral, Pu ...
- HihoCoder1164 随机斐波那契(概率DP)
描述 大家对斐波那契数列想必都很熟悉: a0 = 1, a1 = 1, ai = ai-1 + ai-2,(i > 1). 现在考虑如下生成的斐波那契数列: a0 = 1, ai = aj + ...
- JPA无法删除对象【实际项目解决办法】
并非通用, 根据自己实际情况来 不能删除前的dao方法 public void delete(CmsProjectNew bean); 可以删除后的dao方法 @Modifying @Query(&q ...