VS Code远程调试golang代码

一、前言
本文介绍了在本地主机VS Code编辑器中进行golang代码远程调试的方法。
vs code的运行环境是windows,被调试代码的运行环境是centos。go版本为1.13,dlv版本为1.3。
二、调试环境准备
1.确认可以正常使用go get功能(可选步骤)
使用以下命令可以设置go的代理,该代理的地址非官方提供,可靠性存疑.
go env -w GOPROXY=https://goproxy.cn,direct
2.被调试机设置环境变量
1. sudo vim /etc/profile
2. ##编辑文本首行加入如下:
3. export GOPATH=/root/go
4. export PATH={PATH}:{GOPATH}/bin
5. ##wq保存退出
6. sudo source /etc/profile
3.vscode安装提示所需GO插件

三、操作步骤
1.在本地主机和远程主机分别安装dlv
delve,简称dlv是go语言的最常用的调试器,获取dlv的操作命令如下:
1. go get -u github.com/derekparker/delve/cmd/dlv
2. #验证dlv安装
3. dlv version
2.vscode中配置
在vscode中使用打开文件夹模式。打开源代码所在文件夹。编写源代码,代码编写完成后复制到远程主机上。

一定要保证本地代码和远程代码一致
在本地主机中配置远程调试的参数。打开vscode中的调试侧边栏,快捷键 ctrl+shift+d。点击调试栏中的齿轮按钮,
配置调试连接参数。此时vscode中打开了 launch.json 文件的编辑界面,这个文件存储在当前文件夹路径下的 .vscode 目录中,
里面可以存储多组调试配置。默认生成的配置参数如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${fileDirname}",
            "env": {},
            "args": []
        }
    ]
}

在vscode中鼠标移动到json的字段上会提示可以填写的参数。这里手动添加一条远程调试的配置,配置如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${fileDirname}",
            "env": {},
            "args": []
        },
        {
            // 调试配置的名称,用作vscode中区分
            "name": "remotedebug",
            // 调试类型,go语言当然选择go
            "type": "go",
            // 调试请求类型,可以选择launch启动调试和attach附加调试
            "request": "launch",
            // 调试模式,这里选择远程调试
            "mode": "remote",
            // 必填项,远程调试里好像没什么用处
            "program": "${fileDirname}",
            // 远程连接的端口号
            "port": 2345,
            // 远程主机的ip地址
            "host": "192.168.100.118",
            // 被调试的代码在远程主机上的路径,必须使用绝对路径.且具体到指定调试目录
            "remotePath": "/root/go/src/test"
        }
    ]
}

3.在远程主机中启动dlv
cd 到源代码所在的目录,这个目录要与上一步在vscode中remotePath字段配置的路径一致运行以下命令:
1. dlv debug --headless --listen ":2345" --log --api-version 2
2. ##--headless指定只使用调试服务模式,
3. ##--listen指定了调试服务的端口,要与vscode的配置一致。
4. ##--log启用了调试日志输出,可关闭。
5. ##--api-version 2选择调试api的版本,这里必须指定为2,否则不能调试
6. ##-- 双减号加空格后填写程序启动的参数
待被调试机器出现如下状态,可启动vscode中F5功能键进行远程调试 。


image.png

4.进行VScode调试


image.png
• 开始调试

在vscode中使用 F9 为代码设置/取消断点,在调试栏中选择之前编辑好的remotedebug调试配置,F5开始调试,此时vscode会与远程调试服务连接,连接成功后程序运行并中断在第一个断点处。
• 操作快捷键
F5 开始调试
shift + F5 停止调试
F9 设置/删除断点
F10 跳过
F11 跳入
shift + F11 跳出
• 调试信息
在调试栏中可以查看变量值、调用堆栈、监视列表、断点列表;
四、问题解决

  • 使用launch方式远程调试时,
    vscode会提示:Request type of 'launch' with mode 'remote' is deprecated, please use request type 'attach' with mode 'remote' instead.目前看这个提示暂时可以不用理会。
  • 有时候在launch.json被编辑状态时进行调试会失败,需要关闭该文件的编辑。
  • 重启调试功能在远程调试中无法使用,点击后会不能继续调试,需要重启vscode。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容