如何用CodeBlocks调试?
一、简介
这篇文章我主要会介绍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调试?的更多相关文章
- 如何用VS调试不属于解决方案的EXE和DLL程序
如果你手里有一个现成的EXE, 以及EXE相关联PDB文件, 还有相关联的CPP文件和H文件. 你如何用VS调试? (当然你可以选择WinDbg.不过这里就讨论VS) 你或许想问我干嘛不从一开始就用V ...
- 【基础】CodeBlocks调试器基本使用方法
CodeBlocks是一个开放源码的全功能的跨平台C/C++集成开发环境. 下载地址:http://www.codeblocks.org/downloads/26 其中,Windows环境下可以使用 ...
- 如何用 fiddler 调试线上代码
有时代码上线了,突然就碰到了坑爹的错误.或者有时看别人家线上的代码,对于一个文件想 fork 下来试试效果又不想把全部文件拉到本地,都可以使用 fiddler 的线上调试功能. 比方说我们打开携程的首 ...
- codeblocks调试快捷键说明
使用codeblocks避免不了快捷键: 在调试程序的时候: 首先在view->toolbar->debugger调出来:快捷方式可以自己看 RUN to Cursor :F4 单步调试 ...
- 关于codeblocks调试错误
对于出血编程者,当代码有错误时,可能大家一般都是在程序的变量操作之后输出变量的值,但是这种方法较麻烦,工作量较大,也无法很快的找出错误,因此运用编程软件调试错误就显得尤为重要,刚才写啦一个代码,运用直 ...
- Windows下Codeblocks调试Cocos2d-x项目体验(一次失败的体验)
很久之前的一篇文章有介绍过在Ubuntu下安装Cocos2d-x3.11并使用Codeblock调试Cocos2d-x程序:http://www.cnblogs.com/moonlightpoet/p ...
- CodeBlocks调试器设置错误问题
错误如下: Building to ensure sources are up-to-date Selecting target: Debug ERROR: You need to specify ...
- codeblocks 调试不停止的解决办法。
CB的工程路径不能有中文,也不能有空格. 所以一定要全英文路径,而且空格要用下划线代替. 否则,调试的时候,codeblocks不会在断点处停止.
- codeblocks 调试
codeblocks 调试工具使用的注意事项: 1.codebloccks 调试,必须要在一个项目下才可以,也就是说“单独的文件是不能运行debug工具的” 2.项目的目录文件名必须是全英文,同时文件 ...
随机推荐
- js 函数和函数的参数
/* * 函数 function * - 函数也是一个对象 * - 函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码) * - 函数中可以保存一些代码在需要的时候 ...
- myeclipse重写快捷键
shift+alt+s 点击Override/Implments methods
- [luogu7340]Balance
构造一个坐标系,共有$n$个黑点和百点,第$i$个黑点为$(p_{i},a_{i})$,第$i$个白点为$(-q_{i},-b_{i})$ 考虑第$i$个黑点和第$j$个白点连线的斜率,恰好就是$f( ...
- 【.NET 6】使用.NET 6开发minimal api以及依赖注入的实现、VS2022热重载和自动反编译功能的演示
前言: .net 6 LTS版本发布已经有若干天了.此处做一个关于使用.net 6 开发精简版webapi(minimal api)的入门教程,以及VS2022 上面的两个强大的新技能(热重载.代码自 ...
- 使用微软RPA工具 Power Automate自动完成重复性工作
介绍 最近发现了win11自带了一个有趣的功能,可以自动去执行一些流程的工作.恰好目前每天早上都需要去提醒同事填写日计划,刚好可以试用下. 这是官网上对此功能的介绍 可以看到,对于win11我们是可以 ...
- 我的获奖记录及 Important Dates in OI
逊逊的获奖记录/ruo(真的没拿过啥奖,并且大部分都集中在初三阶段,即 2020-2021 赛季): NOIP2018 pj,1=,无游记 CSP-S2019,1=,无游记 APIO2020,Ag,游 ...
- [GZOI2017]配对统计
发现我们可以在\(O(n)\)里很多处理出至多\(2n\)对好对. 然后转化成二维偏序. 然后想怎么做怎么做:排序+BIT,莫队都行.
- 【R】表达矩阵指定绘制两样本的相关性散点图?
表达矩阵 要做两两样本的相关性散点图,并计算标明相关系数. 编写函数要点: 直接在aes中传参是不行的 线性回归表达式 函数 方法1:用!!ensym myplot <- function(in ...
- linux—查看所有的账号以及管理账号
用过Linux系统的人都知道,Linux系统查看用户不是会Windows那样,鼠标右键看我的电脑属性,然后看计算机用户和组即可. 那么Linux操作系统里查看所有用户该怎么办呢?用命令.其实用命令就能 ...
- Linux—linux 查看一个文件有多少M
ls -l --block-size=M #就把目录下的所有文件按M单位呈现