Golang远程调试Debug环境

news2024/12/25 0:26:05

目录

  • 背景
  • 软件版本
  • 环境搭建
    • 安装`Golang`环境
    • 安装`dlv`环境
    • 启动远程环境
    • Goland 连接远程环境
  • 参考

背景

最近在做 Operator 的二次开发,开发语言是GolangOperator 开发时候需要用到k8s集群,遗憾的是k8s编排的容器网络与本地网络不通,无法直接进行debugk8s 调整网络的方式比较麻烦,曲线救国在 k8s node 上安装Golang环境,本地进行远程debug

Golang 远程debug 需要借助dlv 工具。

软件版本

  • Golang 1.19.2
  • dlv 1.9.1
  • Goland 2020.3.5

环境搭建

安装Golang环境

wget https://golang.google.cn/dl/go1.19.2.linux-amd64.tar.gz
tar -C /usr/local -zxvf go1.19.2.linux-amd64.tar.gz

vi ~/.bash_profile
#在最下面添加
export GOROOT=/usr/local/go
# export GOPATH=/home/go ## GOPATH 可以不加
export PATH=$PATH:$GOROOT/bin #:$GOPATH/bin
export GOPROXY="https://goproxy.io"
source ~/.bash_profile

安装dlv环境

# 这里采用的是git clone 的方式,也可离线下载release版本。
# 任意目录
git clone https://github.com/derekparker/delve.git
cd delve/cmd/dlv/
go build
go install
# 可执行程序为 `cmd/dlv/dlv`
# 可以将其拷贝到 `/usr/bin`中, 也可以创建软连接的方式

启动远程环境

# 进入项目目录
dlv debug --headless --listen=:2345 --api-version=2
# 此时控制台会阻塞
# 这个命令忘记也没关系,goland 远程连接的地方有提示

Goland 连接远程环境

从Templates 中创建一个 Go Remote 启动即可。
在这里插入图片描述
注意:

  • Goland 中的代码要跟远程debug的代码一致,否则调试结果不准确,通过git进行代码同步是个不错的选择。
  • dlv启动参数 --accept-muticlient 可不加,加上可能会有其他问题。

参考

  • goland远程调试
  • Go Lang远程调试 with Goland
  • Go以及调试工具dlv安装及使用
  • dlv官方仓库
  • Golang 官方网站

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十部必看特种部队电影之《勇者行动》

这部特种部队题材电影是馆长收藏了很久的网盘资源,今天拿出来分享给大家。

远程直接连接 MySQL 数据库,阿里云腾讯云允许远程连接教程

不使用SSH登录远程主机直接连接远程数据库 文章目录修改MySQL登录权限1、登录MySQL2、修改mysql库的user表3、防火墙开放3306端口Navicat直接连接远程数据库报错【报错】Cant connect to MySQL server (10060)1、网络问题2、mysql账户设置3、防火墙端口未开放4、查看云服务器商…

JWT -- Json Web token

JWT 的背景知识可以看这篇文章: JSON Web Token 入门教程 JWT 由三个部分组成: Header(头部)Payload(负载)Signature(签名) 在分布式系统下,存在跨session的问题,则使用…

[附源码]Python计算机毕业设计Django毕业生就业管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

cdn加速华为云obs桶文件配置过程(详细)

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 前言 前面写了一篇文章,jeecg-boot中上传图片到华为云obs云存储中 主要介绍了下,如何使用jeect-boot微服务将文件上传至obs中。 但是上传是没有问题,…

目前看过最全的一线大厂面试题(题 + 详解),你所不知道的都在这

前言 在过 1 个月即将进入 2023,然而面对今年的大环境而言,跳槽成功的难度比往年高了很多,很明显的感受就是:对于今年的 java 开发朋友跳槽面试,无论一面还是二面,都开始考验一个 Java 程序员的技术功底和…

FL Studio2022水果编曲音乐制作软件自带完整插件

FL Studio 2022是一款非常好用的音乐制作软件,又称水果编曲软件,软件集合了录音、混音、编辑等多种功能于一体,能够完成各种各样的音乐编曲工作,强大的音乐制作功能受到了很多用户的喜爱,帮你完成各种类型音乐的编曲制…

《500强高管谈VE》-企业经营与VE活动

文章出处:日本VE协会杂志文章翻译:泰泽项目部 关注泰泽:实现高利润企业 《500强高管谈VE》-企业经营与VE活动 作者:兄弟工业常务董事渡边共祥 由墨西哥货币不稳定引发的此次日元升值,一度跌破80日元,呈现…

Servlet程序及部署方式(Tomcat+Smart Tomcat)

目录 1、Servlet是什么? 2、Servlet程序【例——hello world】 2.1、创建项目 2.2、引入Servlet依赖 2.3、创建目录结构 2.4、编写代码 2.5、打包程序 2.6、部署程序 2.7、验证程序 3、更方便的部署方式——Smart Tomcat 1、Servlet是什么? Se…

初识计算机网络

目录 网络的发展 重新看待计算机结构 大型存储平台 认识 "协议" 网络和OS之间的关系 初识网络协议 协议分层 OSI七层模型 TCP/IP五层(或四层)模型 网络传输基本流程 局域网通信的原理 如果进行跨网络传输 网络通信里面的基本轮廓 数据包封装和分用…

多线程同步

文章目录一、多线程同步竞争与协作互斥的概念同步的概念互斥与同步的实现和使⽤锁信号量⽣产者-消费者问题经典同步问题读者-写者问题一、多线程同步 竞争与协作 在单核 CPU 系统⾥,为了实现多个程序同时运⾏的假象,操作系统通常以时间⽚调度的⽅式&am…

为dev c++配置图形开发环境easyx之mingw32

easyx官方的文档在说明如何配置环境上面不太详细,所以就有了我的那篇博文为dev c配置图形开发环境easyx,默认的是在64位的编译器TDM-gcc下配置的,也就是我们配置的easyx最终都是放在mingw64文件夹下的,5.1版本后的dev c内置的编译…

什么是分层架构

👨‍💻个人主页:微微的猪食小窝 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 微微的猪食小窝 原创 1、什么是架构分层? 分层架构是将软件模块按照水平切分的方式分成多个层,一个系统由多层组成…

同时安装Vue2和Vue3

背景 当我们的工作中使用的还是脚手架还是基于Vue2.x的版本,那么我们想要学习和使用Vue3怎么办?直接升级脚手架的话,会影响到我们现在的项目,那就需要去处理下关于Vue3的东西了。 下载安装Vue3的脚手架 任意磁盘根目录新建一个文件…

【深入理解C++】new/delete和new[]/delete[]探秘

文章目录1.operator new()和operator delete()2.new记录分配的内存大小供delete使用3.new[]/delete[]申请和释放一个数组3.1 基本数据类型(内置类型)3.2 自定义类型(类类型)4.new/delete和new[]/delete[]要配对使用1.operator new…

开发 Chrome 扩展 之 Hello World 心血来潮

开发 Chrome 扩展 Hello, World 项目加载未打包的扩展icon刷新引入 JS 与错误处理 开发 Chrome 扩展 开发 Chrome 扩展除了需要基本的 HTML, CSS, JS 之外, 还可以使用 Chrome 额外提供的 API. 除了需要的 .html, .css 和 .js 文件之外呢, 扩展还包括不同类型的文件, 具体可…

杨辉三角形(Java版)

不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。 文章目录1. 什么是杨辉三角形2. 实现思路(方式)2.1 递归方式2.2 递归…

Nginx简单使用

安装龙蜥操作系统 镜像文件在这里下载就行 下载之后新建虚拟机 ISO选择刚才下载文件即可 具体配置可以照我来 也可自定义 基本工具安装 安装一下最基本的网络工具 yum install net-tools openssh-server wget tar make vim -y测试一下ssh连接 方便后期操作 修改主机名 …

Jedis 使用教程总结

一、Redis 常用命令 1 连接操作命令 quit:关闭连接(connection)auth:简单密码认证help cmd: 查看 cmd 帮助,例如:help quit 2 持久化 save:将数据同步保存到磁盘bgsave&#xff…

设计模式之原型模式

文章目录1.前言概念使用场景2.原型模式核心组成UML图3.浅拷贝与深拷贝基本类型与引用类型浅拷贝代码演示深拷贝代码演示4.原型模式的优点与缺点1.前言 概念 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的…