作者:matrix
发布时间:2023-12-31
分类:Golang
远程环境可能会有远程调试需求,比如白名单访问限制等情况
要让本地环境调试远程环境数据,本地代码和远程环境执行代码必须保持一致
安装dlv
远程服务器环境安装 dlv
$ go install github.com/go-delve/delve/cmd/dlv@latest
查看已安装dlv版本
$ dlv version
Delve Debugger
Version: 1.21.0
Build: $Id: fec0d226b2c2cce1567d5f59169660cf61dc1efe
启动dlv服务
方法a. 监听已启动进程
$ dlv attach 28122 --listen=:8669 --headless --api-version=2 --log
28122 为已启动进程id
8669 为dlv开启的监听端口
方法b. 通过dlv直接启动指定bin文件
$ dlv exec --listen=:8669 --headless --api-version=2 --log ./main-hhtjim
8669 为dlv开启的监听端口
main-hhtjim 为打包的bin文件
方法c. dlv直接启动并且监听
$ dlv debug --listen=:8669 --headless --api-version=2 --log
8669 为dlv开启的监听端口
本地vscode启动debug
本地配置 .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": "Launch Remote",
"type": "go",
"request": "attach",
"mode": "remote",
"remotePath": "/home/work/demo-go/", //项目远程根路径
"port": 8669, //监听端口
"host": "www.hhtjim.com", //远程主机/IP
"cwd": "${workspaceFolder}",//vscode本地工作目录
"trace": "verbose" //输出详情
}
]
}
销毁dlv监听
调试环境不使用之后切记销毁,dlv目前无身份校验!
作者:matrix
发布时间:2022-09-12
分类:零零星星
配置快捷键运行多条命令,目前没有看到官方的解决方案,使用三方插件支持
测试环境:
Mac vscode 默认语言
multi-command插件
https://marketplace.visualstudio.com/items?itemName=ryuta46.multi-command
先安装multi-command~
打开配置页
打开vscode命令面板按F1
或者command + shift + p
搜索 open keyboard shortcuts
,选择Open Keyboard Shortcuts (JSON)
我之前有次修改过cmd-k
快捷键,目的是清空code-runner
插件运行的命令行信息(清屏)。
vscode默认的cmd-k
执行场景有限,当初是把触发条件when
修改为终端或者编辑器获取焦点就行。
...
{
"key": "cmd+k",
"command": "workbench.action.terminal.clear",
"when": "terminalFocus && terminalProcessSupported || editorFocus"
}
...
但是现在需要terminal
和output
都执行清空,也就是执行两条命令。我尝试了多次都失败了,最后也只好乖乖安装插件搞定。
自定义快捷键
按照上面操作,正常打开keybindings.json
文件,
或者自己打开配置文件默认路径:
~/Library/Application Support/Code/User/keybindings.json
我需要执行多个消息清空的命令,按下面配置即可
// 将键绑定放在此文件中以覆盖默认值auto[]
[
//...
{
"key": "cmd+k",
"command": "extension.multiCommand.execute",
"args": {
"sequence": [
"workbench.action.terminal.clear",
"workbench.output.action.clearOutput",
]
},
"when": "terminalFocus && terminalProcessSupported || editorFocus"
},
//...
]
说明:
command
参数执行插件入口命令extension.multiCommand.execute
sequence
参数配置需要执行的命令(按序执行)
when
参数控制触发条件
配置完成之后,会立即生效~ 这样就可以了
找到自己的command
你自定义的快捷键可能会用到vscode的其他命令,可以使用下面方法找到完整command命令
- 打开vscode命令面板按
F1
或者command + shift + p
-
搜索命令关键字
-
点击右侧设置按钮
参考:
when参数可用context:
https://code.visualstudio.com/api/references/when-clause-contexts
不使用插件的方法:
VS Code: bind one key to multiple commands without an extension
作者:matrix
发布时间:2022-01-07
分类:Python
之前是本地Python环境安装Django项目直接运行和断点,现在尝试切换到vscode~
vscode插件
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers
https://marketplace.visualstudio.com/items?itemName=ms-Python.python
Dockerfile配置
用于创建docker镜像
项目根目录中创建Dockerfile文件
# syntax=docker/dockerfile:1
FROM python:3.10
#设置容器中环境变量
ENV RUN_ENV='develop'
WORKDIR /data
COPY requirements.txt .
RUN pip install -i https://pypi.douban.com/simple/ -r requirements.txt
# 方式2.安装依赖
# RUN pip install -i https://pypi.douban.com/simple/ django pytz pymysql mysqlclient requests numpy python-dateutil matplotlib pandas_datareader scipy sklearn
根目录中需要有requirements.txt
docker-compose配置
用于开启容器,挂载开发目录以及端口
项目根目录中创建docker-compose.debug.yml文件
version: '3.4'
services:
pythonsamplevscodedjangotutorial:
image: django-dev:1.1
build:
context: .
dockerfile: ./Dockerfile
volumes:
- ./:/data
# command: ["sh", "-c", "pip install -i https://pypi.douban.com/simple/ debugpy -t /tmp && python /tmp/debugpy --wait-for-client --listen 0.0.0.0:5678 /data/manage.py runserver 0.0.0.0:8000 --nothreading --noreload"]
command: ["sh", "-c", "python /tmp/debugpy --listen 0.0.0.0:5678 /data/manage.py runserver 0.0.0.0:8000 --nothreading --noreload "]
ports:
- 8000:8000
- 5678:5678
说明:
volumes表示 映射本地路径./
-->容器路径/data
5678为断点监听端口
8000为项目访问端口
配置debug
配置vscode debug
项目根目录中编辑或创建.vscode/launch.json
{
"configurations": [
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"port": 5678,
"host": "localhost",
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "/data"
}
]
}
]
}
启动容器
$ docker-compose -f ./docker-compose.debug.yml up
添加断点后,浏览器访问127.0.0.1:8000即可调试
参考:
https://code.visualstudio.com/docs/containers/docker-compose#_python
https://docs.docker.com/compose/compose-file/compose-file-v3/#build
https://www.youtube.com/watch?v=x7lZAmMVo2M
作者:matrix
发布时间:2021-10-07
分类:command Linux
线上代码有时候会需要部署到内网或者防火墙后面的本地服务器环境,这个时候发布代码或者调试都会造成不便。
使用环境
测试环境为 mac vscode
windows版本的操作相差不大。
vscode作为ide编辑器,也作为文件管理工具来上传下载服务器文件。需要安装Remote - SSH插件完成这些功能。
目的
本地环境可以直接编辑操作远程服务器中的文件,当然这非常危险和忌讳!
修改文件前你需要做备份然后灾难还原 😀
路径也很清晰,通过中转来访问:
localhost -> jump -> target-service
本地电脑连接中转服务器,再通过中转服务器连接后端的target-service完成操作。
配置ssh
插件安装之后按F1
键打开命令行,找到remote-ssh相关文件配置命令。
或者可以直接修改~/.ssh/config
文件
配置
# 中转服务器
Host jump-box
HostName 118.X.X.11
User root
# IdentityFile ~/.ssh/jumpbox
# 需要连接的目标服务器 即后端的非暴露地址
# Target machine with private IP address
Host target-box
HostName 192.168.1.11
User root
# IdentityFile ~/.ssh/target
ProxyCommand ssh -q -W %h:%p jump-box
说明:
如果服务器有设置密钥登录,IdentityFile
参数用于设置私钥文件地址。
连接
配置完成之后,点击左侧的remote - ssh
插件的选项页面,就能看到配置的服务器。包含jump-box
,target-box
。
之后打开连接,点击右侧的文件夹📁图标打开新窗口,vscode会进行连接请求。若是密码登录请求则会让你输入密码,依次连接jump-box
,target-box
服务器,且最终停留在target-box服务器上,可以在线编辑操作非常方便。
vscode连接成功后,左下角会有绿色连接提示。
文件操作
和其他编辑器的基本功能都是一样,代码文件直接编辑保存,之后会自动上传到服务器。
如果想上传文件需要在vscode中找到要上传的文件或目录,点击右键复制。之后服务器的vscode窗口中点击右键粘贴。
参考:
https://code.visualstudio.com/blogs/2019/10/03/remote-ssh-tips-and-tricks
http://kb.ictbanking.net/article.php?id=639
https://code.visualstudio.com/docs/remote/ssh
https://kenzoluo.github.io/2020/03/13/VScode%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E7%9A%84%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B/
https://xirikm.net/2019/619-1