这篇文章上次修改于 486 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
NOI Linux2.0考场环境使用指南
编写代码
Code::Blocks
Code::Blocks是考场唯一一个可以图形化调试的IDE,但是极为难用。
创建项目
更改终端
然后就可以编代码啦,编译选项我也没找到在哪里改,反正不建议使用
优雅折中的Geany
Geany非常简单,打开后和Dev-C++非常相像,只可惜不能调试,只能单开终端调试,可以更改编译选项。
更改Build的编译选项即可,可以参照这个来写:
g++ "%f" -o "%e" -g -Wall -std=c++14 -fsanitize=address,undefined
后面一个神奇的编译选项将在后面提到。调试请参考VSCode的调试部分。
VSCode
听说你想用机房很火的VSCode?哈哈,CCF提供的C/C++插件处于半残废状态,要想编译和调试只能手写JSON,反正我不会。
但是VSCode的代码高亮等等等很好用,只是要手敲命令行,我认为还好。
打开工作区
建议直接打开要求的代码保存目录。
编译及运行
在bash终端里面输入
g++ *.cpp -o * -g -Wall -std=c++14 -fsanitize=address,undefined
后面的很复杂的编译选项可以不管,这个是新版本g++加入的新功能,可以一定程度上避免程序的UB行为避免大部分RE。
运行
./*
就可以像在Windows下一样输入了,Ctrl+C强制结束。
调试
调试功能依赖于gdb。
注意事项:
如果此行没有输入命令,按下回车,会自动执行上一行的内容,容易导致翻车
使用指南:
进入gdb:
gdb *
查看源代码:
list
就会列出代码,每次列出 $20$ 行,如果列出,说明可以开始调试,否则编译过程中可能没有加入 -g 选项。
加入断点:
break xxx(行号)
运行:
run
下一步:
next
单步进入:
step
跳过:
continue
查看变量值:
print xxx(变量名)
应该只会用这些,多余的可以自行了解。
NOI Linux的其他翻车细节
Arbiter
arbiter别乱用,特别容易崩溃。
喜闻乐见.jpg
scp?
sshd被删了,别想着偷别人代码。
中文目录
哪个zz想的Linux目录是中文啊啊啊,不要把代码复制到桌面,不要给文件名加上中文,否则编译错误满天飞。
编辑器崩溃
不建议用编写代码的IDE来看样例,建议单独开一个,大样例会把编辑器搞崩溃,代码就没了。