vscode连接远程容器
这里使用ssh连接而没有采用docker直连,感觉ssh连接更方便些
在容器内启动ssh服务
-
1-修改sshd_config 文件
启动容器后,在容器内修改/etc/ssh/sshd_config 文件,修改以下字段
Port 22 #改成其他数字,避免容器内的ssh端口,与物理机ssh端口冲突
PermitRootLogin prohibit-password #如需使用root用户登录,prohibit-password 改为 yes
-
2-启动ssh服务,修改密码
service ssh start # 启动ssh服务
在连接容器时,需要容器的用户名和密码,容器内的用户的默认密码,我们不清楚,可以使用passwd user 换成你用户名
vscode Remote -SSH
- 1-在插件市场,搜索remote-ssh ,找到之后安装,安装之后,可在左边工具栏看见一个电脑的图标
-
2-配置ssh连接
a.使用快捷键ctrl + shift +p 打开 vscode 菜单 ,查找 ssh ,选择Remote-SSH: Open SSH Configuration
b.选择config文件进行配置(默认第一个即可)
c.ssh config 参考如下进行设置
# 直连
Host 10.100.209.15
HostName 10.100.209.15
Port 22
User jiyujiao
# 通过跳板连接
Host 10.100.98.48
HostName 10.100.98.48
User chenzhengda
Port 22
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -W %h:%p 10.100.209.15
# 连接docker
Host mm_chenzhengda
HostName 10.100.98.48
User root
Port 713
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -W %h:%p 10.100.98.48
复制代码
- 4-连接至容器
安装之后,点击remote-ssh图标,可以看见我们之前,在ssh_config配置好的docker
代码调试
代码调试需要在.vscode目录下创建launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "resnet50",
"type": "cppdbg",
"request": "launch",
// "preLaunchTask": "build",
"program": "${workspaceFolder}/bazel-bin/magicmind/tools/mm-e2e",
"args": [
"--parser-type=caffe",
"--transform-type=cv",
"--dataset-type=imagenet",
"--dump-io=true",
"--test-number=2",
"--input-shapes=1,3,224,224",
"--input-data-types=FLOAT32",
"--precision-mode=float16",
"--input-names=input",
"--output-names=prob",
"--input-layouts=NCHW",
"--quantization_algorithm=symmetric_linear",
"--dataset-path=/data/datasets/imagenet/",
"--dataset-name=${workspaceFolder}/magicmind/tools/mm_e2e/test/ut_data/test_file_list_for_imagenet",
"--calibrate-dataset-name=${workspaceFolder}/magicmind/tools/mm_e2e/test/ut_data/calibrate_file_list_for_imagenet",
"--input1=/data/models/IK_benchmark/V2.5.0/Accuracy_Benchmark/Classify/model/ResNet50/ResNet50_train_val_merge_bn.caffemodel",
"--input2=/data/models/IK_benchmark/V2.5.0/Accuracy_Benchmark/Classify/model/ResNet50/ResNet50_train_val_merge_bn.prototxt",
"--mean-value=103.94,116.78,123.68",
"--std-value=1.0,1.0,1.0",
"--preprocess-option=kScaleUp",
"--resize-length=256"
],
// "stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [
{"name": "NEUWARE_HOME","value": "/usr/local/neuware"},
{"name": "MM_CPP_MIN_VLOG_LEVEL","value": "1"},
{"name": "LD_LIBRARY_PATH","value": "$LD_LIBRARY_PATH:/usr/local/neuware/lib64"}
],
},
]
}
复制代码
点击▶启动调试,
VARIABLES,查看栈内的变量
WATCH,可以添加自己要观察的变量
CALL STACK 显示线程的调用栈
BREAKPOINTS 查看断点
调试期间,Debug Console可以用来执行部分代码,查看变量,此处我执行了node_item->GetNode()->name(),可以看到里面的值是main/mm.const-108/cnnl.const