新闻  |   论坛  |   博客  |   在线研讨会
技术实践|如何优雅的使用Delve调试KubeVela代码
中电金信人 | 2022-09-01 16:28:36    阅读:134   发布文章


本文从Go语言自身编译运行特点及云原生应用特性出发,简述了开发云原生功能中所遇到的痛点及对应的调试方法。同时介绍了该方法中所涉及组件的安装部署、调试步骤、操作等,希望能够帮助到从事云原生开发工作的同仁,也欢迎各位同仁交流探讨。

一、概述

目前很火热的云原生资源编排架构都是以Go语言设计开发,Golang区别于其他脚本类语言(如Python),需要在编译后才能运行。由于云原生应用都是以Pod资源封装运行,代码均封装在每一个运行的Pod中,无法直接进行调试,这让功能开发和调试变得十分复杂。针对上述的问题并结合Golang的特性,采用如下Source Codes+Delve+IDE(Goland)+Postman方式进行调试。

二、KubeVela

注:

1. 调试环境已安装KubeVela相关组件

2. 调试环境Go版本1.17+

3. 调试环境Kubernetes版本 v1.20+

KubeVela 社区代码库:

https://github.com/kubevela/kubevela/releases/tag/v1.4.6

根据所使用的版本,下载对应KubeVela代码库,上传到已安装KubeVela组件的集群中。如下所示:


编辑

三、Delve

Delve是Go编程语言的调试器,是为Go提供一个简单的、功能齐全的调试工具。

■下载及编译Delve插件

Delve官网****:

https://github.com/go-delve/delve

设置调试环境的Go环境变量,生成可执行的二进制文件

go env -w GOBIN=/Users/kubevela/study/go

# GOBIN:二进制文件生成后的所在目录

直接安装最新版即可

go install github.com/go-delve/delve/cmd/dlv@latest

■安装Delve插件

将二进制放入Bin目录中

mv dlv /usr/local/bin/

修改二进制文件执行权限

chmod a+x /usr/local/bin/dlv

查看dlv版本,验证安装成功

dlv version

此刻,Delve插件安装完毕!

四、Goland

注:本地代码调试终端也需要配置GO语言环境及存在待调试的源代码。

■点击编辑配置,配置远程调试

编辑

 

■填写远程调试环境信息

编辑

 

■在需调试的代码,打上断点


编辑

此刻,IDE配置完毕,IDE充当Delve 调试器的界面,方便操作。

五、调试操作

■编译源代码

进入源代码apiserver目录,执行以下命令

go build -o main -gcflags "all=-N -l" main.go

开启dlv调试程序

dlv --listen=:2345 --headless=true --api-versinotallow=2 --accept-multiclient --check-go-versinotallow=false exec ./main

运行程序:

1. dlv会监听API server listening at: [::]:2345

2. apiserver服务监听HTTP APIs are being served on: 0.0.0.0:8000

编辑

 

■使用Postman调试API接口

使用集群IP和8000端口号,即可通过本地访问集群API接口。


此刻,程序会停留在断点处,通过Goland IDE工具进一步进行调试。以上就是使用Source Codes+Delve+IDE(Goland)+Postman方式对KubeVela API代码的调试过程,其他Go语言程序调试过程大同小异,可供参考。



*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客