一、简介

  这篇文章我主要会介绍CodeBlocks的调试功能,并简单讲述如何使用它。

二、前言

  大家好,最近和小伙伴们讨论修改程序的时候,我突然想到,授人以鱼不如授人以渔(指调试),于是这篇文章应运而生,当然了,这是笔者第一次写博客并发表,如果有错误或者可以改进的地方,欢迎探讨。

三、什么是调试?

  在写程序的过程中会不可避免的产生BUG,而这个时候调试器就是提升解决问题效率的好工具了,它能够快速的定位到BUG的位置,并极大极大的提升你优化和修改程序的效率。

四、在CodeBlocks中如何进行调试

  1调试的目的

  调试的目的主要是跟踪变量值,观察程序是否按预期的情况在执行,如果遇到变量值与预期不符,则问题就出现在之前的语句。在调试之前,需要考虑可能有问题的代码段,在此代码段之后设置断点。

  1.1创建一个项目

  调试功能只能在项目中使用,单独打开一个文件是不行的,而且项目路径不能包含中文,否则会导致问题。

  1.2完成程序的编写

  为了体现调试的功能,我写了个包含常见错误的程序,程序的功能是调用函数实现a+b,函数结果存于c中,并输出c的值。

  1.3设置断点

  轻轻的在行号的右边点一下就可以了,这个小红点就是断点,调试时程序执行到这一行会自动停止,如果要取消这个断点则点击一下那个小红点(调试的时候取消是没用的)。

  1.4进行调试

  首先介绍一下我们将要使用的功能。

  从左向右分别介绍:

  ①调试\继续。这个就是开始调试的按钮,当然,在没有设置断点的时候是不会停下来的,继续功能是指让程序继续运行,直到下一个断点或者输入数据。

  ②执行到光标处。本质上同样是开始调试,但是这个调试是从你点击的地方开始的,如图所示,我使用这个功能前把光标放在了(就是鼠标点到了)12行,现在它是从13行开始调试,而不是从断点开始,这里我加了一行代码,不过无关紧要。

  ③下一行。功能为执行本行代码,在开始调试后,我们需要逐行调试代码时,就需要它了,继续上一张图,点了一下之后输出了lalalala,并且黄色光标移到了下一行,值得注意的是,执行到cin的时候,我们需要输入数据之后才能继续,不输入数据只戳下一行是没用的哈。

  ④跟进。作用为黄色光标指向函数的时候,使用这个功能就能执行进入函数内部,

  ⑤跟出。字面意思,与跟进相反,可以从函数里跳出。

  ⑥下一条指令。如果一行里面有多个指令(如int a;int b;)就是逐个指令运行。

  ⑦step into instruction没怎么用到过,不怎么了解。

  ⑧同上,也不怎么用到。

  ⑨停止调试器。字面意思。

  ⑩调试窗口。开始调试之后打开,核心功能都在里面了,各有各的功能,其中监视比较重要,可以显示各个数据的值,其他笔者用得比较少,感兴趣可以去查阅相关资料。

  如图所示,使用监视之后可以看见各个值的量,随着你的逐行调试也可以看见它们什么时候发生了变化,右键点击变量也可以把他们添加到监视中去。在这个程序中,可以看见c的值从头到尾都没变过,可以判断是c的引用的问题,修改后就搞定了。

  下图为修改后的调试

  1.5复杂一点的例子

  这里以一个二叉树的节点为例子

  按住CONTROL键点“...”按钮可以看见这个结构体里变量的值。

  *T->lchild可以访问T的左子树,以此类推可以推出这棵树所有节点的值。(就是有点麻烦,希望知道更好办法的大佬可以说一下有没有更好的办法)

  1.6 VScode中的使用

  同样以刚才的二叉树为例子,VScode中的调试与CodeBlocks中大致相同,只是它在鼠标指上去的时候就会显示值,点击箭头就可以展开,看见指针指向的结构体的值。

  可以看见VScode确实挺香的。(笑)

五、后记

调试功能不仅仅于此,不仅可以使用图形界面调试,还可以使用命令行来进行调试,不过对于目前阶段的学习(指本科)不是很需要这方面的知识。

希望大家都能有所收获,感谢大家读完本文!

2021/11/30 21:18 AwakeFantasy

如何用CodeBlocks调试?的更多相关文章

  1. 如何用VS调试不属于解决方案的EXE和DLL程序

    如果你手里有一个现成的EXE, 以及EXE相关联PDB文件, 还有相关联的CPP文件和H文件. 你如何用VS调试? (当然你可以选择WinDbg.不过这里就讨论VS) 你或许想问我干嘛不从一开始就用V ...

  2. 【基础】CodeBlocks调试器基本使用方法

     CodeBlocks是一个开放源码的全功能的跨平台C/C++集成开发环境. 下载地址:http://www.codeblocks.org/downloads/26 其中,Windows环境下可以使用 ...

  3. 如何用 fiddler 调试线上代码

    有时代码上线了,突然就碰到了坑爹的错误.或者有时看别人家线上的代码,对于一个文件想 fork 下来试试效果又不想把全部文件拉到本地,都可以使用 fiddler 的线上调试功能. 比方说我们打开携程的首 ...

  4. codeblocks调试快捷键说明

    使用codeblocks避免不了快捷键: 在调试程序的时候: 首先在view->toolbar->debugger调出来:快捷方式可以自己看 RUN to Cursor  :F4 单步调试 ...

  5. 关于codeblocks调试错误

    对于出血编程者,当代码有错误时,可能大家一般都是在程序的变量操作之后输出变量的值,但是这种方法较麻烦,工作量较大,也无法很快的找出错误,因此运用编程软件调试错误就显得尤为重要,刚才写啦一个代码,运用直 ...

  6. Windows下Codeblocks调试Cocos2d-x项目体验(一次失败的体验)

    很久之前的一篇文章有介绍过在Ubuntu下安装Cocos2d-x3.11并使用Codeblock调试Cocos2d-x程序:http://www.cnblogs.com/moonlightpoet/p ...

  7. CodeBlocks调试器设置错误问题

    错误如下: Building to ensure sources are up-to-date Selecting target:  Debug ERROR: You need to specify ...

  8. codeblocks 调试不停止的解决办法。

    CB的工程路径不能有中文,也不能有空格. 所以一定要全英文路径,而且空格要用下划线代替. 否则,调试的时候,codeblocks不会在断点处停止.

  9. codeblocks 调试

    codeblocks 调试工具使用的注意事项: 1.codebloccks 调试,必须要在一个项目下才可以,也就是说“单独的文件是不能运行debug工具的” 2.项目的目录文件名必须是全英文,同时文件 ...

随机推荐

  1. 后台大哥请进一步:使用Visual Studio编译scss和souce map实现前后端的完美结合

    title: 后台大哥请进一步:使用Visual Studio编译scss和souce map实现前后端的完美结合 date: 2020-06-28 sidebarDepth: 2 tags: win ...

  2. go微服务框架Kratos笔记(六)链路追踪实战

    什么是链路追踪 借用阿里云链路追踪文档来解释 分布式链路追踪(Distributed Tracing),也叫 分布式链路跟踪,分布式跟踪,分布式追踪 等等,它为分布式应用的开发者提供了完整的调用链路还 ...

  3. Qt Creator 源码学习笔记02,认识框架结构

    阅读本文大概需要 6 分钟 在上一篇大概了解了关于Qt Creator 基础知识后[1],本篇先学习下框架基本结构,这样能够清晰的知道这个框架当中包含哪些文件.文件夹.工程文件,这些文件分别代表什么意 ...

  4. [loj2135]幻想乡战略游戏

    以1为根建树,令$D_{i}$为$i$子树内所有节点$d_{i}$之和 令$ans_{i}$为节点$i$的答案,令$fa$为$i$的父亲,则$ans_{i}=ans_{fa}+dis(i,fa)(D_ ...

  5. [nowcoder5667K]Keyboard Free

    不妨设$r1\le r2\le r3$,令$f(\alpha)=E(S_{\Delta}ABC)$,其中AB坐标分别为$(r_{1},0)$和$(r_{2}\cos \alpha,r_{2}\sin ...

  6. List、ArrayList、迭代器、链表、Vector

    1.List接口中的常用方法. List是Collection接口的子接口.所以List接口中有一些特有的方法. void add(int index, Object element) Object ...

  7. HTML四种定位-粘滞定位

    粘滞定位 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset=&q ...

  8. 妹子始终没搞懂OAuth2.0,今天整合Spring Cloud Security 一次说明白!

    大家好,我是不才陈某~ 周二发了Spring Security 系列第一篇文章,有妹子留言说看了很多文章,始终没明白OAuth2.0,这次陈某花了两天时间,整理了OAuth2.0相关的知识,结合认证授 ...

  9. CSP-S2021 挂分记

    赛前 数了数,这是我第五次来南航,不知道以后还有机会了(2018 NOIP, 2019CSP, 2020CSP, 2020NOIP). 上午一觉睡到 10 点,学了一下感觉很有用的 BIT 倍增,顺手 ...

  10. P3571 [POI2014]SUP-Supercomputer

    *X. P3571 [POI2014]SUP-Supercomputer 题意简述:一棵以 \(1\) 为根的树.\(q\) 次询问,每次给出 \(k\),求至少要多少次同时访问不超过 \(k\) 次 ...