【六袆-Golang】Golang:安装与配置Delve进行Go语言Debug调试

安装与配置Delve进行Go语言Debug调试

      • 一、Delve简介
      • 二、win-安装Delve
      • 三、使用Delve调试Go程序[命令行的方式]
      • 四、使用Golang调试程序

Golang开发工具系列:安装与配置Delve进行Go语言Debug调试

摘要: 开发环境中安装和配置Delve,一个强大的Go语言调试工具。通过Delve,您可以更轻松地调试Go应用程序,提高开发效率。

一、Delve简介

Delve是一个开源的Go语言调试器,它提供了丰富的功能,包括设置断点、单步执行、查看变量值等。Delve支持在本地和远程调试Go程序,使得开发者能够更方便地定位和解决代码中的问题。

  • 官方地址:github.com/go-delve/delve

二、win-安装Delve

安装Delve需要确保已经安装了Go语言环境,并正确配置了GOPATH和GOROOT环境变量。接下来,按照以下步骤安装Delve:

  1. 运行以下命令安装Delve:
$ git clone https://github.com/go-delve/delve
$ cd delve
$ go install github.com/go-delve/delve/cmd/dlv
  1. 安装完成后,您可以通过运行dlv命令来验证Delve是否成功安装:
dlv version

如果显示Delve的版本信息,则表示安装成功。

三、使用Delve调试Go程序[命令行的方式]

使用Delve调试Go程序非常简单。以下是一个简单的示例,演示如何使用Delve调试一个名为main.go的Go程序:

  1. 编写一个简单的Go程序,例如:
package mainimport "fmt"func main() {x := 10y := 20z := add(x, y)fmt.Println("Result:", z)
}func add(a, b int) int {return a + b
}
  1. 在终端中,导航到包含main.go文件的目录。
  2. 运行以下命令启动Delve并调试程序:
dlv debug main.go

Delve将启动并显示一个交互式命令行界面。

  1. 设置断点:在Delve命令行界面中,输入以下命令在第6行设置断点:
break main.go:6
  1. 开始调试:输入continue命令(或简写为c)开始运行程序,直到遇到断点:
continue

程序将在断点处停止执行。此时,您可以查看变量值、单步执行代码等。例如,使用print x命令查看变量x的值。要单步执行代码,请使用next命令(或简写为n)。要进入函数内部进行调试,请使用step命令(或简写为s)。要查看当前堆栈信息,请使用stack命令(或简写为bt)。此外,Delve还支持许多其他有用的命令和功能,您可以通过输入help命令查看完整的命令列表和说明。例如:要查看当前堆栈信息并打印变量值,请执行以下操作:在Delve命令行界面中依次输入以下命令:stack(查看堆栈信息)和 print z(打印变量z的值)。这些命令将帮助您更好地了解程序在断点处的状态。当然,这只是Delve功能的冰山一角。在实际开发中,您可能会发现Delve还有许多其他有用的特性和功能等待您去探索。

  1. 当您完成调试后,可以使用exit命令退出Delve。

四、使用Golang调试程序

  • 安装好的delve,进行目录文件的替换

安装好delve,默认会在设置的GOPATH下的bin目录下

在这里插入图片描述

替换

替换掉Golandch目录下的dlv.exe文件
在这个位置 GoLand 2023.3.2\plugins\go-plugin\lib\dlv\windows

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法打卡day5|哈希表篇01|Leetcode 242.有效的字母异位词 、19.删除链表的倒数第N个节点、202. 快乐数、1. 两数之和

哈希表基础知识 哈希表 哈希表关键码就是数组的索引下标,然后通过下标直接访问数组中的元素;数组就是哈希表的一种 一般哈希表都是用来快速判断一个元素是否出现集合里。例如要查询一个名字是否在班级里: 要枚举的话时间复杂度是O(n)&…

Leetcoder Day25| 回溯part05:子集+排列

491.递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入:[4, 7, 6, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [6, 7], [7,7], [4,7,7]] 说明: 给定数组的长度不会超过15。数组中的整数范围是 [-100,100]。给定数…

【Python】Code2flow学习笔记

1 Code2flow介绍 Code2flow是一个代码可视化工具库,旨在帮助开发人员更好地理解和分析代码: 可以将Python代码转换为流程图,以直观的方式展示代码的执行流程和逻辑结构。具有简单易用、高度可定制化和美观的特点,适用于各种代码…

AI学习(5):PyTorch-核心模块(Autograd):自动求导

1.介绍 在深度学习中,自动求导是一项核心技术,它使得我们能够方便地计算梯度并优化模型参数。PyTorch 提供了一个强大的自动求导模块(Autograd),它可以自动计算张量的导数得出梯度信息,同时也支持高阶导数计算。 1.1 概念词 在学…

Bicycles(变形dijkstra,动态规划思想)

Codeforces Round 918 (Div. 4) G. Bicycles G. Bicycles 题意: 斯拉夫的所有朋友都打算骑自行车从他们住的地方去参加一个聚会。除了斯拉维奇,他们都有一辆自行车。他们可以经过 n n n 个城市。他们都住在城市 1 1 1 ,想去参加位于城市…

nginx实现http反向代理

一、代理概述 1、代理概念 1.1 正向代理(Forward Proxy) 概念:正向代理是位于客户端和目标服务器之间的代理服务器,代表客户端向目标服务器发送请求。客户端将请求发送给代理服务器,然后代理服务器将请求转发给目标服…

ChatGPT 正测试Android屏幕小组件;联想ThinkBook 推出透明笔记本电脑

▶ ChatGPT 测试屏幕小组件 近日 ChatGPT 正在测试 Android 平台上的屏幕小组件,类似于手机中的悬浮窗,按住 Android 手机主屏幕上的空白位置就可以调出 ChatGPT 的部件菜单。 菜单中提供了许多选项,包括文本、语音和视频查询的快捷方式&…

【OpenCV C++】Mat img.total() 和img.cols * img.rows 意思一样吗?二者完全相等吗?

文章目录 1 结论及区别2 Mat img的属性 介绍1 结论及区别 在大多数情况下,img.total() 和 img.cols * img.rows 是相等的,但并不总是完全相等的。下面是它们的含义和一些区别: 1.img.total() 表示图像中像素的总数,即图像的总像素数量。2.img.cols * img.rows 也表示图像中…

springboot003图书个性化推荐系统的设计与实现(源码+调试+LW)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SpringBoot的图书个…

【GitHub】修改默认分支

GitHub的默认分支为main,但我们常常习惯使用master作为默认分支,那在GitHub上如何将master修改为默认分支呢? 全局修改 点击头像,选择菜单栏中的设置 输入master作为默认分支,然后执行updating即可! 单项…

如何使用程序通过OCR识别解析PDF中的表格

https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/ppstructure/table/README_ch.md#41-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B Paddle-structure是目前我们能找到的可以做中英文版面分析较好的一个基础模型,其开源版可以识别十类页面元素。这篇文章介绍…

数据结构:树/二叉树

一、树的概念 逻辑结构:层次结构,一对多 节点:树中的一个数据元素根节点:树中的第一个节点,没有父节点孩子节点:该节点的直接下级节点父(亲)节点:该结点的直接上级节点兄弟节点:有…