嘿,Go开发时我是如何远程调试的

简介: 嘿,Go开发时我是如何远程调试的

一、搭建个人CI



1、创建镜像


注:如果环境上镜像已经创建好了,此步骤可以省略。


个人CI的镜像是基于base:1.0镜像创建的,在原有的镜像基础上增加安装了openssh和go语言远程调试工具dlv


1、创建镜像项目,项目文件包含Dockerfile,dlv文件是在linux环境中编译好的,可以直接复制到容器中使用,start_ssh.sh是为了容器自启动ssh服务


2、下载压缩包,在linux环境上解压文件夹,在文件夹中执行一下构建命令即可创建完成个人CI的容器镜像(前提是环境上已经下载了base:1.0镜像)


docker build . -t personal-ci:1.0-20220428

3、检查镜像

docker images

image.png


2、创建容器


创建镜像命令如下

docker run -d -it --name test --privileged=true -p 20022:22 -p 20045:2345 personal-ci:1.0-20220428  /bin/bash


需要修改的地方:


--name:容器名称,可以使用自己的工号作为容器名,方便后续操作。

-p : 端口映射,容器里面有用到ssh的22端口和dlv的2345端口,所以需要映射到linux主机的端口。


注:同一个主机上面会有不同的人使用,所以在使用端口映射时,一定要使用为被使用的端口


查看容器


docker ps |grep test


3、进入容器


docker exec -it test sh  


二、远程调试



1、goland设置文件同步


1、打开项目,点击Tool -> Deployment -> Configuration

image.png

2、在跳出来的弹框上面点击加号,选择SFTP,并且命名

image.png

image.png

image.png

3、选择SSH Configuration,之前没有创建过,需要创建一下。

image.png

创建SSH,Host ip地址是linux主机的地址,port是创建容器时,容器22端口映射在主机上的端口。用户名密码统一是root/onecap_root,点击测试连接,连接成功后,点击ok保存。

image.png

选择创建的SSH

image.png

设置文件夹映射和自动同步

image.png

选择映射在home目录下的同名文件夹(需要自己创建),然后点击OK创建完成

image.png

回到项目,选择项目文件夹,点击Tool->Deployment -> Upload to远程容器。第一次同步需要点击upload,之后可以设置文件修改时,保存自动上传。


(注:如果项目比较大,建议打压缩包上传,解压,不然需要耗费很多时间)(注:如果项目比较大,建议打压缩包上传,解压,不然需要耗费很多时间)(注:如果项目比较大,建议打压缩包上传,解压,不然需要耗费很多时间)(注:如果项目比较大,建议打压缩包上传,解压,不然需要耗费很多时间)


image.png


2、goland设置远程debug


选择测试用例文件,配置远程调试

image.png

image.png

填写Name,Host和Port,Host是远程linux主机IP,port是容器2345端口映射的linux主句端口,点击ok成功

image.png


3、打断点,调试


1、在测试用例文件和主文件里面设置断点

image.png

image.png

2、远程到容器,到测试用例所在目录,开启远程调试

image.png

执行命令

dlv test  --headless --listen=:2345 --api-version=2

image.png

3、goland编辑器里面开启debug

image.png

1、可以调试测试用例

image.png

2、也可以调试主程序

image.png


注:每次调试完成之后,下次调试,都需要到远程容器里面再次开启远程调试。即到调试文件所在文件夹执行命令


dlv test  --headless --listen=:2345 --api-version=2

目录
相关文章
|
11月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
776 4
|
数据采集 数据挖掘 测试技术
Go与Python爬虫实战对比:从开发效率到性能瓶颈的深度解析
本文对比了Python与Go在爬虫开发中的特点。Python凭借Scrapy等框架在开发效率和易用性上占优,适合快速开发与中小型项目;而Go凭借高并发和高性能优势,适用于大规模、长期运行的爬虫服务。文章通过代码示例和性能测试,分析了两者在并发能力、错误处理、部署维护等方面的差异,并探讨了未来融合发展的趋势。
1267 0
|
11月前
|
JavaScript 前端开发 Java
【GoWails】Go做桌面应用开发?本篇文章带你上手Wails框架!一步步带你玩明白前后端双端的数据绑定!
wails是一个可以让你使用Go和Web技术编写桌面应用的项目 可以将它看作Go的快并且轻量级的Electron替代品。可以使用Go的功能,并结合现代化UI完成桌面应用程序的开发
1778 5
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
657 61
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。
|
缓存 弹性计算 API
用 Go 快速开发一个 RESTful API 服务
用 Go 快速开发一个 RESTful API 服务
|
人工智能 缓存 安全
Go开发遇见的一次Data Race
本文通过一段 Go 语言代码示例,分析了并发编程中的数据竞争(Data Race)问题。代码实现了一个带缓存的内存存储系统,包含 `LRUCache` 和 `MemoryCache` 两个核心组件。尽管在 `MemoryCache` 的 `Set` 方法中加了锁保护,但由于直接调用 `LRUCache` 的 `GetLength` 方法时未加锁,导致底层数据结构在多 goroutine 环境下被同时读写,从而触发 Data Race。文章详细解析了问题根源,并提出了解决方案:为 `LRUCache` 的 `Add` 方法添加锁保护,确保并发安全。
207 1
|
Go API 定位技术
MCP 实战:用 Go 语言开发一个查询 IP 信息的 MCP 服务器
随着 MCP 的快速普及和广泛应用,MCP 服务器也层出不穷。大多数开发者使用的 MCP 服务器开发库是官方提供的 typescript-sdk,而作为 Go 开发者,我们也可以借助优秀的第三方库去开发 MCP 服务器,例如 ThinkInAIXYZ/go-mcp。 本文将详细介绍如何在 Go 语言中使用 go-mcp 库来开发一个查询 IP 信息的 MCP 服务器。
963 2
|
开发框架 Go 计算机视觉
纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCV 或 dlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。
591 5
|
Go 数据安全/隐私保护 开发者
Go语言开发
【10月更文挑战第26天】Go语言开发
287 3

热门文章

最新文章