内容简介:大家好,我是小栈君,好久没更新文章了,确实抱歉!因为工作变动等原因导致最近拖更严重,但是请大家放心,我会一如既往的为大家带来自己的原创文章,供大家相互交流和学习,一起成长。今天小栈君带来的分享是go语言的调试利器DELVE。关于delve工具的介绍,这里简单给大家介绍一下。delve在go项目及应用的开发中可以用来追踪程序中的异常代码,也可以通过打日志的方式追查问题,但是更重要也是非常厉害的一点,就是delve可以直接分析程序执行的情况。这一点在后期或线上的问题排查中无疑是提供了一个非常大的便捷。我们可以登
大家好,我是小栈君,好久没更新文章了,确实抱歉!因为工作变动等原因导致最近拖更严重,但是请大家放心,我会一如既往的为大家带来自己的原创文章,供大家相互交流和学习,一起成长。今天小栈君带来的分享是 go 语言的调试利器DELVE。
关于delve工具的介绍,这里简单给大家介绍一下。delve在go项目及应用的开发中可以用来追踪程序中的异常代码,也可以通过打日志的方式追查问题,但是更重要也是非常厉害的一点,就是delve可以直接分析程序执行的情况。这一点在后期或线上的问题排查中无疑是提供了一个非常大的便捷。
我们可以登陆官网上进行查看 -- https://github.com/go-delve/d... --
对于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 ------------------- 显示或更改当前goroutine goroutines ------------------ 列举程序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知识
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Go 调试利器:delve
- GDB 8.1 发布,程序调试利器
- vConsole 3.2.2 发布,手机前端开发调试利器
- vConsole 3.3.0 发布,手机前端开发调试利器
- PyTorch代码调试利器TorchSnooper: 自动print每一行代码的Tensor的信息
- JMockit:单元测试利器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
高可用架构(第1卷)
高可用架构社区 / 电子工业出版社 / 2017-11-1 / 108.00元
《高可用架构(第1卷)》由数十位一线架构师的实践与经验凝结而成,选材兼顾技术性、前瞻性与专业深度。各技术焦点,均由极具代表性的领域专家或实践先行者撰文深度剖析,共同组成“高可用”的全局视野与领先高度,内容包括精华案例、分布式原理、电商架构等热门专题,及云计算、容器、运维、大数据、安全等重点方向。不仅架构师可以从中受益,其他IT、互联网技术从业者同样可以得到提升。一起来看看 《高可用架构(第1卷)》 这本书的介绍吧!