Vscode
必备技巧
AI 代码补全工具
- github Copilot
- Codeium[^2]
- TONGYI Lingma,阿里
- codemate
- IntelliCode, for python
cleancode
必备插件
- Trailing Spaces: 代码末尾空格
- clang_format: 格式化
- SonarLint: 静态分析代码规范(圈复杂度判断?
远程连接
插件
RemoteDev 相当于华为内部的Remote-SSH
报错
远程连接插件 Remote-SSH 插件报错
C++ 开发
自动跳转
- 已经安装了 C/C++和 C++ Intellisense 插件;
- 确认 C_Cpp: IntelliSenseEngine 的开关打开
- 左击插件 C/C++,选择小齿轮 -> 扩展设置。
- 搜索框内输入 “intell”,将 C_Cpp:Intelli Sense Engine 开关设置为 Default。
- “Ctrl + Shift + P”打开C/C++:Edit Configurations(JSON)创建。
另一个基于ctag+vscode的实现方法
- 安装插件
格式化代码
C/C++
插件会自动包含clang-format
可执行文件,- 也支持设置里自定义
clang_format_style
, 设置file:C:\Users\94364\github\.clang-format
1 | # 华为兼容格式 |
Debug
数组查看技巧
参考GDB的命令
conda环境调试
1 | { |
多线程进程调试c++
注意编译选项-g -O0
。不然常量参数flag=1会被优化掉。
修改代码
1 | void LaunchProcess(uint32_t procIdx) { |
找到运行子进程的PID
1 | PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command |
VSCODE设置,连接上后需要暂停再启动一次
1 | { |
多线程进程调试python
图中白色是主进程,绿色是所属同名子进程,来负责不同的功能。
对于通过subprocess.Popen(cmd).communicate()
已经创建的子进程(代码中编写time.sleep(20)
,并在下一条指令标记断点),需要设置launch.json
,在同一个VSCODE窗口下启动一个新的debug示例,然后选择其PID来监控
1 | { |
对于threading.Thread(target = fuc, args = (xxx)).start()
启动的线程不需要额外监视。
最终能有如下效果:
单线程启动
1 | { |
1 | g++ -g -std=c++11 SLIC.cpp -o SLIC #把调试信息加到可执行文件中,如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。 |
参数
1 | { |
"args": [],
里添加