大家好,我是小栈君,好久没更新文章了,确实抱歉!因为工作变动等原因导致最近拖更严重,但是请大家放心,我会一如既往的为大家带来自己的原创文章,供大家相互交流和学习,一起成长。今天小栈君带来的分享是go语言的调试利器DELVE。

关于delve工具的介绍,这里简单给大家介绍一下。delve在go项目及应用的开发中可以用来追踪程序中的异常代码,也可以通过打日志的方式追查问题,但是更重要也是非常厉害的一点,就是delve可以直接分析程序执行的情况。这一点在后期或线上的问题排查中无疑是提供了一个非常大的便捷。

我们可以登陆官网上进行查看 – https://github.com/go-delve/delve –


对于delve在官方网站上有比较详细的说明,而且安装情况也是非常简单。我们只需要点击installation中的windows。

注意:如果在模块模式下使用Go,则必须在模块目录之外执行此命令,否则Delve将作为依赖项添加到项目中。

另外,如果尚未设置,则必须将%GOPATH%\ bin目录添加到PATH变量中。

当我们进行下载成功后需要添加到我们的环境变量中,

当然也可以通过%GOPATH%\bin来进行添加即可。所以对于delve的安装按照官方的文档进行下去还是非常方便和快捷。进行完安装后我们就可以开始我们实战演练部分,对于我们的代码进行调试。
对于delve的常用命令我们可以通过dlv –-help 来进行了解

PS:踩坑日记:很多小伙伴也有反馈即使我们安装完delve在goland中也无法使用我们的delve来进行代码的调试,因为goland中出现

Version of Go is too old for this version of Delve (minimum supported version 1.13, suppress this error with --check-go-version=false

要解决这个方法很简单,我们在gopath中安装好delve后会生成bin目录,在bin文件夹中会有dlv.exe

然后我们只需要在goland中进行配置一下即可。

然后添加相应的dlv.path为你gopath下的dlv.exe路径,然后重启即可

实操演练:
这里我准备了一个简单的项目进行调试

如图所示可以看到这个是一个非常简单的web服务器代码

然后我们进入到相应dos界面执行dlv debug main.go

我们可以用sources来进行查看源文件。

以下是给大家罗列了一些关于dlv的常用命令。方便大家查看

The following commands are available:args ------------------------ 打印函数参数.break (alias: b) ------------ 设置断点.breakpoints (alias: bp) ----- 输出活动断点的信息.call ------------------------ 恢复进程,注入一个函数调用(还在实验阶段!!)clear ----------------------- 删除断点.clearall -------------------- 删除多个断点.condition (alias: cond) ----- 设置断点条件.config ---------------------- 修改配置参数.continue (alias: c) --------- 运行到断点或程序终止.deferred -------------------- 在延迟调用的上下文中执行命令.disassemble (alias: disass) - 反汇编程序.down ------------------------ 将当前帧向下移动.edit (alias: ed) ------------ 在$DELVE_EDITOR或$EDITOR中打开你所在的位置exit (alias: quit | q) ------ 退出调试器.frame ----------------------- 设置当前帧,或在不同的帧上执行命令.funcs ----------------------- 打印函数列表.goroutine ------------------- 显示或更改当前goroutinegoroutines ------------------ 列举程序goroutines.help (alias: h) ------------- 打印帮助信息.list (alias: ls | l) -------- 显示源代码.locals ---------------------- 打印局部变量.next (alias: n) ------------- 转到下一个源行.on -------------------------- 在命中断点时执行命令.print (alias: p) ------------ 计算一个表达式.regs ------------------------ 打印CPU寄存器的内容.restart (alias: r) ---------- 重启进程.set ------------------------- 更改变量的值.source ---------------------- 执行包含delve命令列表的文件sources --------------------- 打印源文件列表.stack (alias: bt) ----------- 打印堆栈跟踪信息.step (alias: s) ------------- 单步执行程序.step-instruction (alias: si)  单步执行一条cpu指令.stepout --------------------- 跳出当前函数.thread (alias: tr) ---------- 切换到指定的线程.threads --------------------- 打印每个跟踪线程的信息.trace (alias: t) ------------ 设置跟踪点.types ----------------------- 打印类型列表up -------------------------- 向上移动当前帧.vars ------------------------ 打印包变量.whatis ---------------------- 打印表达式的类型.

在命令前键入help来获得命令的完整文档,如help goroutine
接下来就是进行断点的标注,我们可以使用 b 代码位置:行数 进行标注。

标注完成后 直接输入c 可以进行查看源代码。

使用next 可以进行下一步,进行调试。


当然针对更多的dlv命令还需要小伙伴们下来之后进行多多尝试才行。相互学习,共同进步,我是小栈君,我们下期再见!

Go调试利器-delve相关推荐

  1. go 切换当前运行目录_go调试利器-delve

    大家好,我是小栈君,好久没更新文章了,确实抱歉!因为工作变动等原因导致最近拖更严重,但是请大家放心,我会一如既往的为大家带来自己的原创文章,供大家相互交流和学习,一起成长.今天小栈君带来的分享是go语 ...

  2. Windows GUI代码与Windows消息问题调试利器

    Windows GUI代码与Windows消息问题调试利器 记得很久前有这么一种说法: 人类区别于动物的标准就是工具的使用.同样在软件开发这个行业里面,对于工具的使用也是高手和入门级选手的主要区别, ...

  3. fire.php,php代码调试利器firephp安装与使用方法分析

    本文实例分析了php代码调试利器firephp安装与使用方法.分享给大家供大家参考,具体如下: firephp简述 如果你曾经写过js代码的话,那么你对如下的代码肯定不会陌生: console.log ...

  4. php 控制台打印_php调试利器:FirePHP的安装与使用

    php中文网最新课程 每日17点准时技术干货分享 做开发的人都知道,我们可以利用浏览器的控制台来调试JavaScript脚本,但是对于像php这种服务端的脚本,你知道如何调试吗?今天给大家推荐一个ph ...

  5. Fiddler调试利器

    Web调试-Fiddler调试利器:http://www.imooc.com/video/389 转载于:https://my.oschina.net/xkmy520/blog/1551374

  6. 关于 WEB/HTTP 调试利器 Fiddler 的一些技巧分享

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 转自:https://my.oschina.net/leejun2005/blog/151103 1.原理简介 ...

  7. 【远程文件浏览器】Unity+Lua开发调试利器

    Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...

  8. Laravel 调试利器 —— Laravel Debugbar 扩展包安装及使用教程(转)

    Laravel 调试利器 -- Laravel Debugbar 扩展包安装及使用教程 时间 2015-12-24 09:57:09  Laravel学院 原文  http://laravelacad ...

  9. GDB调试利器-单步调试与查看变量

    前言 前面两篇已经对Linux下如何使用gdb启动调试,GDB调试利器-断点设置与查看源码我们已经了解了GDB基本的启动调试,设置断点,查看源码等,如果这些内容你还不知道,建议先回顾一下前面的内容. ...

最新文章

  1. lucene基本原理
  2. [FlareOn2]very_success [FlareOn3]Challenge1
  3. tableau 自定义省份_在Tableau中使用自定义图像映射
  4. 原来访问网页弹出cookie是这样的
  5. rstudio的数据集怎么建立和保存_这个40M的小工具助你在windows下处理数据如虎添翼...
  6. ibatis Dynamic总结(ibatis使用安全的拼接语句,动态查询)
  7. python size和count_groupby 的妙用(注意size和count)
  8. UBNT Bullet M2说明书
  9. R高效开发:Microsoft R Open(MRO)
  10. BUGKU writeup
  11. 打印CSDN网页内容
  12. 搜索引擎的查找算法实现
  13. Python采集全球疫情数据并做可视化分析
  14. 使用 Travis 打造 SpringBoot 应用持续集成和自动部署 | Travis CI 初体验
  15. typora问题解决:This beta version of Typora is expired
  16. 通过安卓逆向来学习安卓开发
  17. Matlab 非线性回归
  18. 机器翻译评价指标之BLEU原理介绍及代码实现
  19. 如何查看电脑是否支持Wi-Fi 6
  20. 【windows版本】 db2数据库安装与使用

热门文章

  1. KP-ABE和CP-ABE(步骤详细讲解)
  2. 游戏智能合约蹒跚学步,链安安全审计保驾护航
  3. linux密码叹号,Linux中“!”感叹号用法技巧大全
  4. 劲舞团登陆不上消息服务器,《劲舞团》在内的多款产品服务器无法登陆
  5. 电脑软件:非常实用的Gif动图制作工具——ScreenToGif
  6. linux内核——3_(进程管理)系统的进程管理
  7. .net5 的Centos7 Docker容器构建
  8. 【美团云】Tensorflow生成对抗网络(Generative Adversarial Networks)实战案例
  9. 技术解读PROFINET、Ethernet/IP等7种主流工业以太网
  10. 安大计算机网络,浅谈计算机网络环境下的网络教学 安徽大学计算机教学部网络教学平台...