文章目录

  • Code工作台(工欲善其事必先利其器)
  • 1、通用工具
    • 1.1、编辑器
    • 1.2、Git 基本版本控制
    • 1.3、Docker容器
  • 2、Linux工作台
    • 2.1、Linux命令
    • 2.2、开发工具
      • 1、Terminator终端
      • 2、Tmux(终端复用器)
      • 3、Vim配置
      • 4、ssh服务器配置以及图形界面
      • 5、代码对比
  • 3、编译与调试
    • Bazel
    • gdb调试
    • valgrind 内存泄漏与越界检查

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 的常用快捷键

  • Sourcetrail(开源、免费、源码可视化)
    开源免费的源码阅读神器 Sourcetrail

  • Source Insight(收费)

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代理源 - 设置代理
# 国内的镜像加速
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
  • 文件内容三剑客(grep、sed、awk)
# 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安装并指定python版本
# 安装virtualenv
pip install virtualenv# 创建虚拟环境并指定PYTHON版本
virtualenv venv --python=python2.7
virtualenv venv --python=python3.7# 退出虚拟环境
deactivate# 删除虚拟环境
rm -r venv

2.2、开发工具

  • Ubuntu 20.04通过docker安装微信和QQ

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/configHost remote_nameHostName ipUser user_nameForwardX11 yesForwardX11Trusted yes

sshfs工具将nas挂载本机:

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

5、代码对比

  • Beyond Compare、Meld Diff Viewer
  • Linux下9种优秀的代码比对工具推荐
  • 代码对比工具,不止于beyond compare

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

  • GCC:GCC(警告.优化以及调试选项)
  • 代码调试
命令 说明
$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调试

  • 100个GDB技巧
  • 掌握gdb调试从入门到进阶(一)
  • 掌握gdb调试从入门到进阶(二)
  • GDB调试教程:1小时玩转Linux gdb命令
  • GDB 基础知识及断点
  • gdb-python调试记录
  • GDB调试之TUI界面
  • GDB TUI - 原來 GDB 要這樣用

valgrind 内存泄漏与越界检查

  • valgrind 检查 C++ 程序的内存泄漏

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

  1. 工作用到的 cmd git docker linux redis k8s 命令

    工作用到的 cmd git docker linux redis k8s 命令 cmd git docker 常用命令 保存镜像 加载镜像 pom 文件配置打包到容器的内容 容器和服务器间拷贝文件 l ...

  2. 工欲善其事必先利其器 之 DockerDesktop(下)

    工欲善其事必先利其器 之 DockerDesktop(下) 文章目录 工欲善其事必先利其器 之 DockerDesktop(下) 前言 一.DockerDesktop Settings 二.什么是 W ...

  3. Jenkins+git+docker构建持续化集成环境

    CI/CD介绍 发布流程设计 Jenkins服务器 192.168.100.109 Git/Harbor 192.168.100.110 Docker 192.168.100.111 工具 版本 Ce ...

  4. 工欲善其事必先利其器 之 Minikube(上)

    关键词:minikube.快速搭建kubernetes.快速搭建k8s.如何在桌面上运行一个k8s 工欲善其事必先利其器 之 Minikube (上) 文章目录 工欲善其事必先利其器 之 Miniku ...

  5. 工欲善其事必先利其器 之 DockerDesktop(上)

    关键词:DockerDesktop.如何在桌面运行Docker.Docker容器 工欲善其事必先利其器 之 DockerDesktop(上) 文章目录 工欲善其事必先利其器 之 DockerDeskt ...

  6. 打造自己本地的渗透测试武器库-工欲善其事必先利其器

    文章目录 打造自己本地的渗透测试武器库-工欲善其事必先利其器 一.安装操作系统 二.安装宝塔 三.安装Docker 四.安装Nessus 五.安装AWVS 六.安装MobSF 七.安装Xray 八.安 ...

  7. 工欲善其事必先利其器-C语言拓展–嵌入式C语言(一)

    工欲善其事必先利其器-C语言拓展–嵌入式C语言(一) 我是golang出生,当时做项目的时候java.c++.js.python都折腾过,但是关于c语言的接触,基本上都停留在大一的那个暑假.后来因为要 ...

  8. # 工欲善其事必先利其器-C语言拓展--嵌入式C语言(八)

    工欲善其事必先利其器-C语言拓展–嵌入式C语言(八) 继续来看看新的属性:weak 这个符号知道是弱,但是这个是干嘛的呢?我们先来学习一下强符号和弱符号 文章内容全部来自–><嵌入式C语言 ...

  9. JVM - 工欲善其事必先利其器之虚拟机工具(下)

    文章目录 JVM - 工欲善其事必先利其器之虚拟机工具(下) 1.可视化虚拟机工具JConsole 1.1 JConsole是什么? 1.2 JConsole的使用 1.2.1 概览 1.2.2 内存 ...

最新文章

  1. GIT如何查看本地分支与远程分支的关联配置(git branch --set-upstream)
  2. CGLIB介绍与原理(通过继承的动态代理)
  3. caioj 1063 动态规划入门(一维一边推1:美元和马克)
  4. 记实现TDengine时序数据库支持 .Net Windows 32位系统踩坑
  5. 国家特级数学教授李毓佩:我们欠孩子真正的数学阅读 !
  6. Java进阶3. 内存回收机制
  7. Java之面试基础知识学习笔记
  8. VS2013配置PDFLib 9.1.2的环境
  9. PAL文件(Palette,调色板)及格式
  10. 购票系统c语言座位分配,铁路购票系统的简单座位分配算法
  11. iOS 日本日历、佛教日历取date的问题及公历转换,时间戳获取不准确
  12. 神之bug 嵌套RecyclerView谜之滚动
  13. 代码随想录第七天 LeetCode 454、383、15、18 (哈希表、双指针)
  14. 计算机用word做贺卡,新年马上就要到了用WORD2000做贺卡 -电脑资料
  15. docker系统中/var/lib/docker/overlay2
  16. Android Studio 3.5 怎样获取MD5签名
  17. 黑客是如何进行IP欺骗的
  18. 帕斯卡计算机结构,帕斯卡计算机: 第一台受专利保护的计算机
  19. 计算机培训机构靠谱吗?能不能相信?
  20. Ubantu14编译7.1.2Android系统

热门文章

  1. goproxy实现windows的mysql的内网穿透
  2. apche的设置和安装
  3. matlab亮度平衡_亮度对比度算法MATLAB实现
  4. Python使用pip安装Numpy模块
  5. 实验楼Java写计算器_Java版图形界面计算器
  6. 在widows下使用ioperm控制端口
  7. android tv播放ftp,乐视TV超级电视FTP功能的详细使用方法步骤
  8. 求推荐一个手机、电脑、网页端三平台通用的桌面便签工具
  9. 10 怎么写USB驱动,Cadence USB 2.0 Controller和PHY IP驱动移植
  10. 视频监控安防平台(企业级)-国标28181平台