广告
返回顶部
首页 > 资讯 > 操作系统 >golang linux 如何调试
  • 765
分享到

golang linux 如何调试

2023-05-14 22:05:20 765人浏览 泡泡鱼
摘要

Go语言作为一种为了更方便、更快速地进行开发而被出版的高级程序设计语言,不仅可以运行在windows,MacOS和linux等多个操作系统上,同时还提供了强大的调试工具帮助开发者解决问题。本篇文章将会介绍如何在Linux系统上进行Go语言程

Go语言作为一种为了更方便、更快速地进行开发而被出版的高级程序设计语言,不仅可以运行在windowsMacOS和linux等多个操作系统上,同时还提供了强大的调试工具帮助开发者解决问题。本篇文章将会介绍如何在Linux系统上进行Go语言程序的调试。

调试工具

Go语言提供了内置的调试器——go debug,但是Go的高效特性也带来了许多调试挑战。Dlv(https://GitHub.com/go-delve/delve)是一个 Go 语言的现代调试器,能够支持 Go 特定的调试功能。Dlv 提供了单步跟踪、查看变量、修改变量和断点等常用的调试功能。另外,GDB也支持Go语言的调试,但是它不能理解Go语言的调度器,因此更适合开发内核或只需要使用少量Go特定功能的程序调试。

安装Dlv

Dlv是用Go语言编写的,因此安装它需要先安装Go语言本身。可以从官方网站(Https://golang.org/dl/)下载最新版本的Go语言安装包,并将其配置到环境变量中。

安装完成Go语言后,我们需要先安装Dlv依赖的库——dynamically linked Linux utilities:

sudo apt-get update
sudo apt-get install linux-tools-common linux-tools-generic linux-tools-`uname -r`

接着执行以下命令安装Dlv:

go get -u github.com/go-delve/delve/cmd/dlv

以上命令将Dlv安装到$GOPATH/bin目录中,可以手动将其添加到PATH变量,也可以通过以下命令将其添加到PATH中:

echo "export PATH=$PATH:$(go env GOPATH)/bin" >> ~/.bashrc
source ~/.bashrc

编译调试程序

我们需要进入程序所在的目录,使用go build编译程序并生成二进制文件。假设我们的程序名为debug-demo,我们可以通过以下命令进行编译:

go build -GCflags "-N -l" -o debug-demo
  • -gcflags "-N -l":添加编译标识以确保编译器不会优化代码,从而方便调试。
  • -o debug-demo:将生成的可执行文件命名为debug-demo。

为了解决源码被汇编的问题,我们还可以使用go env命令获取CGO_ENABLED的值,并将它设置为0,然后再次进行编译:

go env
go build -gcflags "-N -l" -o debug-demo -tags netgo -ldflags '-w -extldflags "-static"' -v main.go

设置断点

在程序中设置断点是调试过程中最为常用的操作。我们可以在代码的任意位置设置断点,以等待程序执行到该处位置时停止。

使用Dlv可以通过以下两种方式设置断点:

  1. 图形界面(推荐)

使用Dlv的图形界面可以更加直观地对程序进行操作和修改。执行以下命令,接着会自动开启图形界面:

dlv debug ./debug-demo
  1. 命令行

执行以下命令进入Dlv命令行模式:

dlv debug ./debug-demo --headless --listen=:2345 --api-version=2

进入Dlv后,我们可以使用break(或缩写为b)命令设置断点:

(b)reak {<location>|<function>|<filename>:<line>|<remote package path>}: 设置断点
(b)reakpoints: 显示当前所有的断点
(d)elete {<breakpoint#>|<breakpoint.id>}: 删除断点#或通过Breakpoint.id删除指定断点
(c)ontinue: 从当前位置继续执行程序,直到下一个断点或程序完结

例如,我们可以在程序的第10行设置断点:

(b)reak main.go:10

控制程序运行

在程序运行过程中,可以使用step(或缩写为s)和next(或缩写为n)命令控制程序运行:

(s)tep: 单步调试,如果当前位置是函数,则进入该函数内部
(n)ext: 单步调试,如果当前位置是函数,则不进入该函数内部

查看变量

Dlv也提供了显示变量的命令,使用print(或缩写为p)命令可以查看当前作用域中的变量:

(p)rint <variable>: 显示变量

例如,我们可以使用以下命令查看变量a和变量b:

(p)rint a
(p)rint b

修改变量

除了查看变量外,Dlv还支持修改变量的值,使用set命令修改变量的值:

(s)et <variable> = <value>: 修改变量的值

例如,我们可以使用以下命令将变量a的值修改为100:

(s)et a = 100

总结

本文介绍了如何在Linux系统上使用Dlv对Go程序进行调试。首先,我们安装了Go语言和Dlv调试器,然后使用go build编译程序并在程序中设置了断点,使用Dlv的图形化界面或命令行控制程序运行,并查看和修改变量的值,以解决Go程序调试中遇到的问题。希望通过本文,读者可以掌握在Linux系统下使用Dlv调试Go程序的基本技能。

以上就是golang linux 如何调试的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: golang linux 如何调试

本文链接: https://www.lsjlt.com/news/206660.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golang linux 如何调试
    Go语言作为一种为了更方便、更快速地进行开发而被出版的高级程序设计语言,不仅可以运行在Windows,MacOS和Linux等多个操作系统上,同时还提供了强大的调试工具帮助开发者解决问题。本篇文章将会介绍如何在Linux系统上进行Go语言程...
    99+
    2023-05-14
  • 如何模块调试golang
    Golang是一种强类型语言,它是一种编译执行语言,这意味着用户需要编译代码才能执行它。在编写高质量的软件时,调试代码非常重要。当代码中的bug被发现时,它可以导致程序失败或产生意外结果。本文将介绍如何在Golang中进行模块调试。使用GD...
    99+
    2023-05-15
  • golang怎么调试
    goland中调试的方法:1、golang软件并新建一个项目;2、编写一个完整的go代码;3、使用鼠标在代码前点击插入断点;4、右键选中新建的goland项目;5、选择“Debug”→“go build goexample”;6、最后使用【...
    99+
    2022-10-20
  • golang调试模式如何设置32位
    要在Golang中设置32位调试模式,可以使用以下命令: 设置环境变量:在终端中输入以下命令,将GOARCH设置为386,表示使用...
    99+
    2023-10-22
    golang
  • 怎么调试golang程序?调试工具介绍
    Golang是一种现代化的编程语言,非常适合用于开发高效、可靠、安全和高性能的应用程序。不过,在开发Golang应用程序的过程中,很难避免出现错误和问题,需要使用调试工具来定位和解决这些问题。调试Golang应用程序的常用工具包括以下几种:...
    99+
    2023-05-14
  • 如何调试Linux shell脚本
    shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误,您可以这样来进行调试: sh -x strangescript   这将执行该脚本并显示所有变量的值。   shell还...
    99+
    2022-06-04
    脚本 Linux shell
  • 在Linux 下如何调试 Python
    在Linux 下如何调试 Python,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一般开发者都是在 IDE 中进行程序的调试,当然,有 IDE 的话,当然首选 IDE 进行调...
    99+
    2023-06-02
  • goLang中如何进行调试操作方法
    这篇文章将为大家详细讲解有关goLang中如何进行调试操作方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。示例如下go get github.com/mailgun/godebugg...
    99+
    2023-06-15
  • Linux下如何调试c语言
    这篇文章主要为大家展示了“Linux下如何调试c语言”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何调试c语言”这篇文章吧。调试是每个程序员都会面临的问题. 如何提高程序员的调试效...
    99+
    2023-06-28
  • linux如何调试多个文件
    在Linux中,您可以使用调试器来调试多个文件。以下是一些常见的方法和工具:1. 使用gdb调试器:gdb是一个功能强大的调试器,可...
    99+
    2023-09-13
    linux
  • Linux下如何调试c++代码
    这篇文章主要为大家展示了“Linux下如何调试c++代码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何调试c++代码”这篇文章吧。Linux下调试C++代码具体方法1.编写好代码...
    99+
    2023-06-28
  • golang的调试工具有哪些
    golang的调试工具有:1.Delve,golang调试工具;2.GDB,Linux系统中的程序调试工具;3.debugcharts,golang可视化调试工具;golang的调试工具有以下几种DelveDelve是一个golang调试工...
    99+
    2022-10-15
  • 如何实现Linux Shell脚本调试
    这篇文章主要讲解了“如何实现Linux Shell脚本调试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现Linux Shell脚本调试”吧!一、调试脚本调试功能是每一种编程语言都应该...
    99+
    2023-06-09
  • linux php调试环境如何搭建
    这篇文章主要讲解了“linux php调试环境如何搭建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux php调试环境如何搭建”吧!linux php调试环境的搭建方法:1、下载安装...
    99+
    2023-06-22
  • vscode调试golang的方法是什么
    要在VSCode中调试Go代码,您需要进行以下步骤:1. 安装Go扩展:在VSCode中,点击左侧的扩展按钮,搜索并安装 "Go" ...
    99+
    2023-10-20
    vscode golang
  • Golang函数的打印调试技巧
    Golang(又称Go语言)是一门由谷歌开发的,现代化的编程语言,广泛在云计算、大数据、后端开发等领域使用。在开发过程中,程序的正确性和性能往往是开发者最关心的问题之一。因此,在开发中适时地添加打印调试信息对于程序的开发和调试至关重要。本文...
    99+
    2023-05-19
    函数 Golang 调试技巧
  • VSCode中调试Golang工程的方法
    小编给大家分享一下VSCode中调试Golang工程的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!关键字最简单的调试攻略多项目调试, 适用个人开发和项目开发无需修改系统环境变量准备VSCode在官网下载最新版的VSC...
    99+
    2023-06-14
  • Linux加载vmlinux调试
    使用gdb加载内核符号表 arm-eabi-gdb out/target/product/msm8625/obj/KERNEL_OBJ/vmlinux 在内核的.config里面要打开 DEBUG_INFO和DEB...
    99+
    2022-06-04
    vmlinux调试 linux加载vmlinux调试
  • Linux调试器中如何实现断点
    这篇文章将为大家详细讲解有关Linux调试器中如何实现断点,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。系列索引随着后面文章的发布,这些链接会逐渐生效。准备环境断点寄存器和内存Elves 和 dwarve...
    99+
    2023-06-28
  • Linux如何使用gdb调试多进程
    这篇文章主要介绍了Linux如何使用gdb调试多进程的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux如何使用gdb调试多进程文章都会有所收获,下面我们一起来看看吧。一.gdb常用目录表操作描述l命令相当...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作