git config --global user.email "you@example.com"
git config --global user.name "Your Name"
,新建一个仓库,设置Repository name(例如2024-playground)。不选添加额外README file和.gitignore。添加一些文件
mkdir playground && cd playground
touch main.cpp
初始化git仓库并添加远程地址
git init . # 这一步会产生.git/
git remote add origin git@github.com:<github用户名>/<仓库名字>.git
git工作流
你的本地仓库由 git 维护的三棵"树"组成。第一个是你的 工作目录,它持有实际文件;第二个是暂存区(Index),它像个缓存区域,临时保存你的改动;最后是Repository中的HEAD,它指向你最后一次提交的结果。

git add . # 把工作目录的改动加入Index
git commit # 把改动提交到HEAD。
# 需要在弹出的文本编辑器中编辑代码提交信息。或git commit -m "代码提交信息"
git push # 把本地仓库的改动提交到远端仓库
# 第一次需要 git push --set-upstream origin master
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,一般master 或main是默认的分支。在其他分支上进行开发,完成后再将它们合并到主分支上。
git status # 查看本地仓库所在分支和状态
git checkout -b feature_x # 创建一个新的分支
git checkout master # 切换回主分支
git branch -d feature_x # 删除新建的分支
git push origin <branch> # 推送分支到远端仓库
git pull # 更新本地仓库到最新
更新与合并
git status
git pull
git merge
git diff
断点是暂停程序执行的标记。断点用于检查程序的状态。可以直接在代码中添加断电,或设置复杂的触发逻辑(例如条件判断、log消息)。

开始debug后可以计算复杂的表达式。

在某些情况下,例如在调试数据处理问题时,我们可能需要查看正在运行的进程的原始内存。可以从Variable选项卡中的指针跳转到包含所需地址的内存区域,并在单步执行程序的同时检查更改。

初始设置
Perf executable: /usr/bin/perf
Valgrind executable: /usr/bin/valgrind

内存错误检测 - Valgrind

CPU性能分析 - Perf

y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的母函数。
x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。