go dlv idea 远程调试-入门级

ops/2024/10/19 5:27:51/

一,准备工作

linux 安装dlv

git clone https://github.com/go-delve/delve.git $GOPATH/src/github.com/go-delve/delve
cd $GOPATH/src/github.com/go-delve/delve
make installecho 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc## 测试是否安装成功
dlv version

idea 安装 go插件,很简单:file->Settings->Plugins然后输入 go安装就行
在这里插入图片描述

二.配置远程环境

1.打开idea, 并按键 shift+alt +F9 打开,会弹出下图的 debug窗口,点击 0 -Edit Configurations
在这里插入图片描述
2. 然后点击 右上角+ 按钮,选择 go remote
在这里插入图片描述

3.写入调试参数
Name: 就是名字,这里可以写 test
Host:这个是要远程调试的服务器ip
Post: 端口号,随便填不冲突就行
连接方式选 ask
然后点击apply,再点击Debug

在这里插入图片描述

三、开始调试

1.编写代码

test.go

package mainimport "fmt"
func main() {fmt.Printf("开始调试\n")var a int32fmt.Scanf("%d", &a)fmt.Printf("结束调试\n")}

calldlv.sh (这个是调用dlv 的脚本,里面的8001就是上面填的端口)

#!/bin/bash
pid=`ps -ef |grep test |grep -v grep |grep -v bash|awk '{print $2}'`
dlv attach $pid --headless --api-version=2 --log --listen=:8001

2.执行代码

编译并执行 go

go build test.go
./test

在这里插入图片描述

执行 calldlv

./calldlv

在这里插入图片描述

3. idea调试

1.按 alt+shift +F9,选择之前填写好的bug配置
在这里插入图片描述

2 打开之后如果是这样的就显示连接 dlv成功了(如果dlv是后启动的,点击红框那行第一个按钮可重新连接)

在这里插入图片描述

  1. 然后打开test.go ,对指定行数点击,断点
    在这里插入图片描述
    4.触发断点
    回到 test 程序指定的地方,随便输入一个数,回车,这个时候idea会立刻弹出(或者闪动)
    然后我们就可以看到断点的具体参数了
    在这里插入图片描述
    5.跳过当前断点
    点击
    在这里插入图片描述
    然后程序会往下执行
    在这里插入图片描述
    ok,大功告成!!!

http://www.ppmy.cn/ops/122249.html

相关文章

SpringMVC——REST

路径请求方式请求行为 查询:GET 新增:POST 修改:PUT 删除:DELETE 有重复的东西怎么办

ajax的原理,使用场景以及如何实现

AJAX 原理 AJAX(Asynchronous JavaScript and XML)是一种在网页中实现异步通信的技术,允许网页在不重新加载整个页面的情况下与服务器交换数据。这使得网页应用可以更加响应式和动态,提升用户体验。 AJAX 的核心原理是在后台通过…

JVM的类加载过程

1、加载 通过类的全限定名找到类的.class字节码文件,加载到方法区中。 创建java.lang.Class对象,这个对象是CKlass的mirror,用来表示这个类在JVM中的表示。 2、链接 链接是将类的二进制数据合并到JVM中,确保类的正确性和可用性…

Golang 进阶1 —— 面向对象

Golang 进阶1 —— 面向对象 注意,该文档只适合有编程基础的同学,这里的go教程只给出有区别的知识点 go语言面向对象说明 Golang与传统的面向编程的语言有区别,并不是纯粹的面向对象编程(OOP)。所以更加准确的说法是…

Vue - 路由用法

前端路由就是URL中的hash与组件之间的对应关系。Vue Router是Vue的官方路由。 组成&#xff1a; VueRouter&#xff1a;路由器类&#xff0c;根据路由请求在路由视图中动态渲染选中的组件。<router-link>&#xff1a;请求链接组件&#xff0c;浏览器会解析成<a>。…

在JS中定义和使用Vector2

概述 Vector2是GDSCript中表示二维向量的类型&#xff0c;你会发现无论在任何编程语言中&#xff0c;只要你想很好的实现2D绘图以及几何和物理相关&#xff0c;Vector2是你必须要实现的一个类。我之前学C时就写过一个C的版本。 本篇就介绍我自己在JavaScript中定义的Vector2类…

HarmonyOS与Android在设计理念、系统架构、性能优化等方面全面对比

HarmonyOS与Android的对比相信是很多关注鸿蒙的人&#xff0c;非常关注的一个焦点话题&#xff0c;HarmonyOS并不是Android的替代品&#xff0c;HarmonyOS与Android并非同一个赛道&#xff0c;HarmonyOS目前缺乏生态支持&#xff0c;这一点远远比不上Android&#xff0c;但是Ha…

利用Spring Boot构建足球青训管理平台

2 相关技术简介 2.1 Java技术 Java是一门伟大的纯面向对象的编程语言和编程语言。同时&#xff0c;它还是Java语言从嵌入式开发到企业级开发的平台。Java凭借其一次编译&#xff0c;任何地方执行的优点&#xff0c;使得盛行的web应用程序有大量的Java编译&#xff0c;很好地支…