【CS-Notes】工欲善其事必先利其器(Code、Git、Docker、Linux)

Code工作台(工欲善其事必先利其器)

原文链接:https://github.com/qipengh/CodeTools


1、通用工具

编辑器、Docker、Git

  1. 解压压缩:Bandizip
  2. 护眼:Redshift
  3. pdf阅读器:福昕阅读器
  4. 思维导图:XMind

1.1、编辑器

VS Code(code神器)、Sourcetrail(免费开源)、Source Insight(收费)

  • Visual Studio Code(免费、开源、神器)

1、配置:|VSCode-开发效率翻倍|–|VSCode C++ 开发利器|–|awesome-vscode|

2、使用:VS Code 的常用快捷键

1.2、Git 基本版本控制

参考:Git-版本控制

  • git
# 获取文件更改的个数 增加行数 删除行数
git diff --stat
# 查看修改的代码行数,新增的文件以及删除的代码行数
git log --stat
# 查看暂存区的代码变化
git diff --cached 

'将指定文件回退到指定版本'
# 1. git log 查看 commit_id
git log /path/file
# 2. 通过commit_id 将指定文件还原到你想要还原的版本
$ git checkout ${commit_id} /path/file
  • git commit \ log
# 查找commit的comment内容
git log --grep=comment注释的关键词

# 查找用户 commit
git log --author=用户名关键字

1.3、Docker容器

参考:Docker-容器

docker build -f xxx.dockerfile -t xxx.com/paddle/devel/x86_64/paddle:v0.8.0-mlu-x86_64-ubuntu18.04 .


2、Linux工作台

教程

  1. Linux工具快速教程Linux开发必看!!!
  2. Linux命令大全
  3. 写给工程师的 Ubuntu 20.04 最佳配置指南
  4. 文件传输:gFTP
  5. 三剑客vim+ctags+cscope、两板斧doxygen gdb:Linux 平台下阅读源码的工具
  • ubuntu 设置字体,避免字体发虚
  1. ubuntu 安装微软雅黑和 Consolas 字体
  2. 安装gnome-tweak-tool in Ubuntu 20.10

2.1、Linux命令

  • shell 与 bash

bash:如何遍历find返回的文件名

  • C++文件解析

c++filt:还原so中的函数名
nm:显示指定File中符号信息
ldd: 查看程序依赖库
strip

目标文件分析	说明
$readelf -all a.out	查看二进制文件信息
$nm myProgrammer	列出目标文件的符号清单
$size a.out	查看程序内存占用	

tar -zxvf xxx.tar.gz解压
tar -zcvf xxx.tar.gz dirname:将dirname和其下所有文件(夹)压缩
tar -tvf xxx.tar.gz:查看压缩包的内容,而不解压-t

ls -l filename:文件大小
du -sh:文件夹大小(所有文件大小的总和)
du -h --max-depth=1 dir
du -h --max-depth=0 dir/*
df -h:文件系统各分区大小
hdparm -Tt [/dev/sda]:分区磁盘速度

man:查询命令command的说明文档;例如:man ps
ps:显示当前进程 (process) 的动态;例:ps -u -p xxx

# 国内的镜像加速
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host=pypi.tuna.tsinghua.edu.cn

# 解决“not a trusted or secure host”
$ cat ~/.pip/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
# awk 按字段分隔符 取 文件关键字所在列
$awk -F '}} = ' '{print $2}' log 
$awk -F '}} = ' '{print $1}' log 
$awk -F '}} = ' '{print $2}' log > log1
$awk -F '[' '{print $1}' log1 
$man sort
$awk -F '[' '{print $1}' log1 | sort -u > log2
# 统计单词次数并按次数排序(uniq: -c 输出重复次数 sort:-n 按照数值比较排序;-r 逆序输出)
sort filename | uniq -c| sort -nr
# 按照第二列排序
sort -k 2 filename
# 安装virtualenv
pip install virtualenv

# 创建虚拟环境并指定PYTHON版本
virtualenv venv --python=python2.7
virtualenv venv --python=python3.7

# 退出虚拟环境
deactivate

# 删除虚拟环境
rm -r venv

2.2、开发工具

1、Terminator终端

  • 配置

安装sudo apt-get install terminator,配置文件~/.config/terminator/config,具体配置参考terminator_config

bashrc配置参考bashrc

  • 快捷键
  1. 终端:打开(Ctrl+Shift+T)、关闭当前(Ctrl+Shift+W
  2. 当前窗口:切换显示(Ctrl+Shift+X)、退出(Ctrl+Shift+Q
  3. 分割终端:水平(Ctrl+Shift+O)、垂直(Ctrl+Shift+E
  4. 垂直分割的分割条:向左(Ctrl+Shift+Left)、向右(Ctrl+Shift+Right
  5. 隐藏/显示滚动条(Ctrl+Shift+S)、clear屏幕(Ctrl+Shift+G
  6. 搜索(Ctrl+Shift+F)、复制(Ctrl+Shift+C)、粘贴(Ctrl+Shift+V

2、Tmux(终端复用器)

Tmux 使用教程

翻页翻屏
进入tmux翻屏模式(先按 ctrl +b,松开,然后再按 [ );上下翻页(PgUp、PgDn);退出(q)

始终将所有窗口的大小调整为最大可用大小(多显示器共用)
tmux set-window-option aggressive-resize on, 再重连

3、Vim配置

  • 简单配置参考:simple_vimrc

  • 详细配置:解压./configs/vim.tar.gz-安装插件vim +PluginInstall +qall

参考

  1. vim插件管理器:Vundle
  2. Vundle:Vim Plugin
    参考:Vim配置

4、ssh服务器配置以及图形界面

ssh -X yourname@ip
cat .ssh/config

Host remote_name
    HostName ip
    User user_name
    ForwardX11 yes
    ForwardX11Trusted yes

sshfs工具将nas挂载本机:

sudo apt install sshfs
sshfs -o Compression=no -o ServerAliveInterval=15 user@ip:path/user ~/mount/nas

5、代码对比

Beyond Compare

  1. 官网安装包:bcompare-xxx-amd64.deb
  2. 安装: sudo dpkg -i bcompare-xxx-amd64.deb
  3. 30天无限试用:
#!/bin/bash
config_of_bcompare=$(find ~ -iname bcompare -print -quit)
rm ${config_of_bcompare}/registry.dat
echo "Done!"

3、编译与调试

GCC、GDB、Valgrind

命令说明
$gdb 启动gdb
gdb --args exec arg1 arg2调试带有命令行参数的程序
> bt(breaktraces)显示所有的函数调用栈帧信息
>break main设置断点
>run运行调试程序
>continue继续执行到下一个断点处(或结束)
>next单步调试
>print var1打印某个变量值
>list显示当前调试处的源代码
>info b显示当前断点调试情况

Bazel

参考,其工作原理:加载与target有关的BUILD文件;分析inputs和dependencies,生成 action graph;执行graph,产出outputs。其中action graph: bazel依赖这个图来追踪文件变化,以及是否需要重新编译,并且还可以为用户提供代码之间的依赖关系图。

# bazel clean
bazel clean # 不会删除外部依赖
bazel clean --expunge # 会删除外部依赖

# bazel build
bazel build :<exe name> # 在BUILD所在的package目录下执行,编译指定的target
bazel build :all  # 编译该package下的所有target
bazel build ...  # 编译该package下的所有target
bazel build <//path/to/package>:<exe name> # 在workspace下的任意目录执行,“//”表示workspace所在目录
bazel build :<exe name> --compilation_mode=dbg # debug mode
bazel build :<exe name> -c dbg # debug mode

# bazel run
bazel run :<target name>
bazel run -- :<target name>

gdb调试

valgrind 内存泄漏与越界检查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值