首页 > 其他分享 >Go语言调试

Go语言调试

时间:2024-11-25 21:14:43浏览次数:5  
标签:语言 go dlv Go Delve 断点 调试

Go语言调试

Go 语言支持 GDB、LLDB 和 Delve 几种调试器。其中 GDB 是最早支持的调试工具,Delve 则是专门为 Go 语言设计开发的调试工具。在调试 Go 程序时,Delve 是 GDB 的更好替代方案,它比 GDB 更了解 Go 的运行时、数据结构和表达式。

注意:以下调试方法都需要在编译go程序时关闭内联和优化,否则打印变量会提示No symbol in current context,断点打不上之类。

  • 1.10及以后,编译时需指定 -gcflags="all=-N -l"
  • 1.10之前,编译时需指定 -gcflags="-N -l"

使用gdb调试go程序

# 在~/.gdbinit中添加
add-auto-load-safe-path /usr/share/go-1.22/src/runtime/runtime-gdb.py # 这个runtime-gdb.py文件的位置可以自行locate搜索一下

使用dlv调试go程序

参考:https://zhuanlan.zhihu.com/p/670644118、https://cloud.tencent.com/developer/article/2378458

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

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

dlv命令

指令 用处
attach 控制一个已经运行的进程,并开始一个新的调试会话。 当退出调试会话时,你可以选择让该进程继续运行或杀死它。
exec 这个命令将使Delve执行二进制文件,并立即附加到它,开始一个新的调试会话。
help 使用手册
debug 默认情况下,没有参数,Delve将编译当前目录下的 "main "包,并开始调试。或者可以指定一个包的名字,Delve将编译该包,并开始一个新的调试会话。
test test命令允许你在单元测试的背景下开始一个新的调试会话。默认情况下,Delve将调试当前目录下的测试。另外,你可以指定一个包的名称,Delve将在该包中调试测试。双破折号--可以用来传递参数给测试程序。
version 查看dlv版本

dlv调试指令

断点管理

指令 缩写 用法
break b 设置断点
breakpoints bp 查看当前所有断点
clear / 删除断点
clearall / 删除多个断点
toggle / 启用或关闭断点

程序执行中的调试指令

指令 缩写 用法
continue c 继续执行到一个断点或者程序结束吗
next n 执行下一行代码
restart r 重新执行程序
step s 执行代码的下一步
step-instruction si 执行下一行机器码
stepout so 跳出当前执行函数
frame、up、down 切换栈帧
stack bt 打印调用堆栈
goroutines grs 显示所有 goroutines
goroutine gr 切换到某个 goroutine 的上下文去

参数管理

指令 缩写 用法
args / 打印函数参数
display / 打印加入到display的变量的值,每次执行下一行代码或下一个断点时
locals / 打印局部变量
print p 打印表达式的结果
set / 设置某个变量的值
vars / 查看全局变量
whatis / 查看变量类型

其他

指令 缩写 用法
disassemble disass 查看反编译后的代码,机器码
exit quit / q 退出
funcs / 打印程序用到的所有函数
help h 帮助信息
list ls / l 打印代码

标签:语言,go,dlv,Go,Delve,断点,调试
From: https://www.cnblogs.com/3to4/p/18568734

相关文章

  • C语言常用数据类型介绍(有图)
    数据类型其实是固定大小内存的别名,并且描述了一个变量存放什么类型的数据。简单来说,就是组织和操作数据。数据类型不仅帮助我们组织和操作数据,还决定了程序如何有效的利⽤内存。序号数据类型中文说明大小(字节)1short短整型22int基本整形43long(longint)长整型4(32位编译器......
  • 初入C语言
    在接触编程开始之前先让我们了解一下计算机的组成。计算机系统是由硬件系统和软件系统两大部分组成。而计算机硬件由五个基本部分组成:运算器、控制器、存储器、输入设备和输出设备。硬件:组成计算机的各种物理部件。(⿏标,键盘)软件:计算机中运⾏的程序和数据。计算机的工作原理......
  • SSM高校人才就业管理系统85l9w--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着高校扩招政策的实施,毕业生数量逐年增加,就业问题成为社会关注的焦点。为了更好地服务毕业生,提高就业率和就业质量,开发一套高......
  • SSM房屋推荐tf975--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与目的随着房地产市场的蓬勃发展,购房者面临的选择日益丰富,但同时也带来了选择困难。为了帮助购房者快速找到符合其需求的房屋,提高购房......
  • SSM服装公司的设计与实现网站v72yl--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容题目:服装公司设计与实现网站一、研究背景与意义随着互联网技术的飞速发展,电子商务已成为现代商业的重要组成部分。对于服装公司而言,拥有一个功能......
  • SSM高校美食大比拼系统ly111程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着高校文化的多元化发展,美食已成为连接学生情感与校园生活的重要纽带。为了弘扬各高校的饮食文化,增进学生间的文化交流,我们计划开发......
  • SSM高校共享书籍信息管理byd86(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着高校教育资源的日益丰富,学生对于书籍的需求也日益增长。然而,传统图书馆的资源分配不均、借阅流程繁琐等问题逐渐凸显。为解......
  • 研一小白零基础学习C语言(三)
    零基础学习C语言(三)研一人机与环境工程零基础接触学习C语言文章目录零基础学习C语言(三)前言一、算数运算符二、赋值操作符、单目操作符和强制类型转换三、printf详细介绍四、scanf详细介绍前言主要介绍了算数运算符、赋值操作符、单目操作符和强制类型转换、printf......
  • 第33章 - Go语言 云原生开发
    第33章-云原生开发将深入探讨云原生技术及其在现代软件开发中的应用。我们将从云原生的基本概念开始,逐步介绍Kubernetes的基本使用方法,并结合具体的云服务提供商实例,通过Go语言编写的应用程序来展示如何实现云原生开发。33.1云原生的概念云原生(CloudNative)是一种构建......
  • 40分钟学 Go 语言高并发:【实战】并发安全的配置管理器(功能扩展)
    【实战】并发安全的配置管理器(功能扩展)一、扩展思考分布式配置中心实现配置的集中管理支持多节点配置同步实现配置的版本一致性配置加密敏感配置的加密存储配置的安全传输访问权限控制配置格式支持支持YAML、TOML等多种格式配置格式自动识别和转换支持环境变量替换......