2020年更新:
被茗哥教育了一顿”CV工程师”后,突发奇想想把以前的文章都整理一下,就从这博客的第一篇文章,也就是大一刚开始接触的工具开始吧。当时比较菜,什么也不会,也是大佬带着一步一步走过来的(虽然现在也很菜),现在看这篇文章,感觉又多了不少想补充的东西,就慢慢写吧。名字就叫学习笔记了,如果有错,欢迎指正。
对于刚入坑程序设计学习C/C++,还是建议上手工具 CLion 或者 Visual Studio,静态代码补全,界面美观,代码补全,一系列的快捷键和插件都是挺香的。CLion刚开始的时候可能会难上手一点,最近已经出了中文插件,刚开始接触的时候可能就可以比较好理解一点了(但仍然不推荐使用中文插件)。JB家整套工具不是免费的,但是对学生免费,有学生邮箱可以直接申请,建议安排一波JB全家桶。
至于老师甚至部分学长学姐推荐的DevC++甚至VC6.0的IDE,都2020年了,还不给自己整一套阳间的工具吗?
最后的最后,特别鸣谢小茗大佬在大一带我学习,我的大部分参考也源自于他的博客(你又开始CV了?):关于CLion的基本的安装和配置建议。
不管怎样,小茗就是最屌的。
申请教育版版权
进入JetBrains官网,申请 Free Educational Licenses。
申请学生授权需要学生邮箱,在大部分的学校内网都可以整到。
接着下载 Toolbox App,JB家的工具集成,可以快速的下载更新JB家的工具以及最近打开过的项目,然后在盒子里 download CLion 即可。
配置Toolchain
CLion需要手动配置工具链才能运行项目,工具链的种类有很多种,包括但不限于WSL(子系统,以及最新的WSL2我还没有试过)、MingW(注意是MingW-W64,与32位区分开来,当然如果你是32位的电脑,当我没说)。
Linux (WSL) on Windows 10
本人极懒,没有复现,这里建议直接看茗哥博客了,链接在上面,有兴趣访问原站(强烈建议)。
Minw-w64
可以直接进入官网下载mingw-w64。
在线下载。记住下载后的路径,Toolchain配置上即可。
一些相关的配置环境
Toolchain配置
Configure→Setting→Build,Execution,Deployment→Toolchains。添加MinGW,添加下载的minW-w64路径(或WSL)。
如上图即配置成功。
WSL同理,将toolchains指向ubuntu.exe。
New project 创建新项目。
第一次启动会花较长时间配置Cmake。下方出现Finished即为成功。
快捷键 shift F10 运行(或者右上角的绿色三角形)。
安装插件
进入 Clion→Configure→Plugins下载插件。
这里给出一些比较推荐的插件。
CodeGlance:滚动条左侧的代码缩略图,方便快速定位代码位置。
Material Theme UI:插件的主题样式来代替CLion自带的主题样式。
Presentation Assistant: 演讲助手,可以回显操作步骤(使用的快捷键)。
安装完后 restart IDE。
另:一些常用的快捷键/方法
快捷键
Ctrl+Shift+Enter: 快速完成if、do-while等语句的补充。例如给if语句填上花括号。
Ctrl+/ :行注释,可选中大片段落注释。
Ctrl+Shift+/ :块注释,同上。
Ctrl+Alt+L:CLion风格(可改风格)快速格式化代码。可以通过格式化代码来学习代码的格式规范。不要太依赖于格式化代码。
Ctrl+D:重复一行。
Ctrl+Alt+T:选中一段代码后,用其将代码被例如if语句快速围绕。
Alt+Enter:快速修复警告和错误。也可以通过小灯泡或右击代码 Actions… 修复,无脑必备。
Shift+F6:重构。将定义域内的同一变量统一重命名。
Double Shift:快速搜索例如Plugins\Scemes等功能位置。
方法
Search with Google:选定文字,右击启动搜索功能。
Compare with Clipboard:同上,用来比较两段文本的差别,打OJ题目核对样例输出的时候比较好用。
Warming Error 提示
静态代码检查:出现警告的代码下方画黄线,出现错误的代码下方画红线(可自定义颜色)。
例如没有分号时:
鼠标瞄到红线上方可以查看错误提示;或者直接用快捷键 Alt+Shift+Enter 让Clion对你出错的代码进行快速修复;或者点击左边的小灯泡,提示你如何修复代码。
一些常见问题
中文路径
不管是Project还是Toolchains均不能以中文路径/中文文件来命名,否则无法编译,产生一堆奇怪的报错。
安装配置这么麻烦/考试的时候机房没有环境?
(深大特供)我大一年的时候是直接带U盘,里面放了CLion的安装包以及MingW工具链(当然不可能现场配一个子系统),提前到考场安装,整个配置流程应该也不会超过十分钟吧。
部分老师会比较佛,如果你问他能不能自带IDE,都会说随便;有的老师管得比较严格,不让带U盘,比如我大一下半年的老师,不过在考试的时候我还是斗胆带了U盘,老师发现了也没有说什么,只要不要在U盘里面装一些奇怪的代码(虽然我觉得装了也没用)就好。
不过现在都2020年了 猛男应该用这个 信安协会在内网里面的FTP地址:http://ftp.szu.moe/,在内网直接访问,在里面下载工具链和CLion就可以了。
关于Debug
debug 在写代码中几乎是一个必不可少的工具(如果是一遍 ak 的巨佬当我没说),肉眼 debug 花的时间大多情况下甚至比写出来还多……然鹅深大的老师好像也没怎么讲debug(至少我是没听过),所以就写点关于 debug 的只是一些比较初级的技巧。
通过打下断点,可以让程序在debug时停在断点的位置而不是一次性的跑完全部程序,通过一步步判断观察bug的位置。
环境是 CLion 2019.2.5 + mingw-w64 ,至于怎么用 Codeblocks 或者 DevC++ 甚至是VC 6.0,那不好意思我也没试过(滑稽.jpg)。
题目
写一个find函数,先后输入数组和需要查找的值,如果找到该数,返回并输出该数的下标。
第一行输入数组的大小;
第二行依次输入数组的元素;
最后一行输入待查找的元素。
来一段bug程序。
IN
5 1 2 3 4 5 3
OUT
3
按理应该是2而不是3的……哪里有问题呢?
breakpoint(断点)
在准备让程序停下的地方打下断点。
CLion中实现的方法为在代码左边单击即可。
一个红色的断点。
debug(调试)
在右上角工具栏。run的旁边一只红色的虫子就是debug;或者用快捷键Shift+F9。
在控制台输入数据之后,程序自动到该停止的地方停下。
此时有:
静态 debug
Console(控制台)
控制用户的输入和输出,显示在console上。
Debugger(调试器)
显示当程序到达该点时的各个变量(包括类的各种变量、外部变量等当前步骤可访问的变量)。
可以清楚的看到数组大小为5,输入的变量为3,数组第一个值为1。
且随着 debug 的的进行,调试器中的变量也实时更新。
关于 Debugger 右边的工具栏(这里的功能比较少用到)。
- New Watch(Insert):添加变量
- Remove Watch(Delete):删除变量
- Move Watch Up:向上移动
- Move Watch Down:向下移动
- Duplicate Watch:复制变量
- Show Watches in the variables tab:独立开出Watches框查看变量。
最后是这个极为强大的功能:
Evaluate Expression
想必都应该用过 google 游览器自带的控制台吧?Evaluate与其类似。
用 Alt + F8 打开或者直接在控制台边打开。
主要功能(包括但不限于):
查看变量值
输入变量值,Evaluate 返回变量的值。
表达式的计算
可以写入一些表达式,比如:
简单的加减乘除
判断(结果返回 bool 值)
修改变量的值
比如++index
同时debugger中变量也会发生变化
总之还是要慎用……修改关键变量可能会导致程序运行结果不同甚至错误。
动态 debug
当程序到了断点处停下后,通过静态debug 你可以查看各种变量,那么当发现程序运行到这里没有问题之后,如何到下一步?重新打一个断点再 debug?
Step Over
跳过,进入下一步。
F8 或者在控制台或者在页面上方的Run找到Step Over。
运行 debug,到断点处:
F8跳到下一步:
可以看见调试台以及页面更新了flag的值,各个变量都更新到了第19行。
一直 step over 可以跟踪进度直到进程结束。
那么问题来了:flag的值是函数的返回值,其计算过程是在函数内,如何查看函数内的运算过程?
Step Into
跳入函数
如图所示,当程序运行到第18行时:
F7 或者在控制台或者在页面上方的Run找到Step Into。
跳入函数:
如图所示,跳入函数,同时调试器的变量自动变为了在函数定义域内的变量。
接下来使用Step Over, 在函数内进行debug,很容易可以发现为什么返回值是3不是2(在找到目标值之后又进行了一次自增操作)。
注:Step Into在不跳入函数时使用效果类同于Step Over,但也有例外(例如跳入stl_stack.h或stl_vector.h)。
上面两种功能是比较常用到的,还有一些不常用到的:
Step Out
跳出函数。
Run to Cursor
跳到下一个断点。