特别声明:本教程已转移至百度经验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调试教程的更多相关文章

  1. 在Code::Blocks中编译和使用wxWidgets3.0.0教程

      跳转至:指南,搜索 注意,编译Code :: Blocks的对wxWidgets的3.0.0链接不是很稳定,但该库至少可以被正确编译,(只是使用的时候可能会有问题):CodeBlocks开发商都在 ...

  2. VC++6.0 IDE的工程用Code::Blocks来打开、编译、调试终极配置方案

    本篇文章转自 CSDN blog,转载请注明出处! 原文地址: http://blog.csdn.net/liquanhai/article/details/6618300 引子:竟然可以用Code: ...

  3. Code::Blocks无法调试 Starting the debuggee failed: No executable specified, use `target exec'

    1.必须建立工程 2.工程名不可有特殊字符或空格,可以有字母.数字.下划线 2.编译器设置里勾选-g(产生调试符号) 3.重新编译项目(如果之前编译过了) 4.调试器设置 > Default & ...

  4. Code::Blocks配置GTK+2和GTK+3

    Code::Blocks配置GTK+2和GTK+3 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根 ...

  5. C语言工具---Code::Blocks

    Code::Blocks Code::Blocks 是一个开源的全功能的跨平台C/C++集成开发环境. Code::Blocks是开放源码软件.由纯粹的C++语言开发完成,它使用了著名的图形界面库wx ...

  6. 关于Ubuntu12.04下code::blocks不能使用debug解决方法

    问题描述:   系统:ubuntu 12.04   code::blocks版本:10.05   问题现象:debug->start        之后出现:warning: GDB: Fail ...

  7. linux下C/C++IDE比较——Code::Blocks

    工欲善其事,必先利其器.用了这么久的linux,现在比较主流的几个C/C++的IDE基本已都用过了,现在来对他们做一下简单的比较. 1.VIM首先要说的是VIM.我认为,VIM只是一个编辑器,不能算是 ...

  8. Fedora Linux 下安装配置C开发环境Code::Blocks

    一.提前的话要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便 ...

  9. Code::Blocks项目配置基础

    File 菜单 New :新建( Empty file/file . class . project . build target ) . Recent projects/files :近期打开的项目 ...

随机推荐

  1. 慕课网-Linux达人养成计划学习笔记

    mkdir -p [目录]创建目录-p 递归创建ls 查看当前目录下的文件和目录等其他文件 cd [目录]命令英文愿意:change directory切换所在目录简化操作cd ~ 进入当前用户的家目 ...

  2. Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session框架

    Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session import tornado.ioloop import tornado.web from myhas ...

  3. Unity 播放 带 alpha 通道的视频(Video Player组件)

    孙广东  2017.6.18 http://blog.csdn.NET/u010019717 通常是  .webm类型文件!!!!!  你可以下载这个文件到本地: Http://tsubakit1.s ...

  4. 【剑指offer-25】合并两个单调递增的链表,C++实现(链表)

    原创博客,转载请注明出处! 1.题目 输入两个单调递增的链表,输出两个链表合成后的链表(单调不减). 2.思路(递归) # 鲁棒性: 如果链表1是空链表,则直接输出链表2. 如果链表2是空链表,则直接 ...

  5. double类型与Double包装类型

    先看下面的代码 package test; public class DoubleTest { public static void main(String[] args) { Double oD = ...

  6. 【test】

    {"type":[    {"name":"专题分类","num":1,"value":[      ...

  7. SEO - H标签

    前言 这两天在做网站的SEO.虽然之前SEO的资料看过很多,但是因为正职是美工的缘故,SEO的具体实施参与的较少.现在的公司有点特殊,SEO团队基本不懂代码,所以需要参与的比较多.以下内容主要是通过自 ...

  8. BZOJ3144 Hnoi2013 切糕 【网络流】*

    BZOJ3144 Hnoi2013 切糕 Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的 ...

  9. iOS保存数据的4种方式

    在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyed ...

  10. ORACLE PL/SQL:触发器

    ORACLE PL/SQL 触发器 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8 ...