Golang Go语言中到底怎么Debug?Print还是Delve?
iOS 程序员 写 Go 遇到了 这样的问题 看 Go 社区部分支持 print 部分支持 devel 搜了点资料,说 go 并行 不适合断点调试
能有大佬解释下 print 和 delve 的利弊吗
Golang Go语言中到底怎么Debug?Print还是Delve?
因为之前 windows 下没有好的 debug 工具,所以就习惯了曾经鄙视的 print 的方式,不搞复杂的程序感觉够用
断点 辅日志。
在开发的时候,加大量的 log
我非常奇怪,Go 没测试框架吗?
没法断点调试,不可能吧
经过写了一年的经历告诉你。几乎盲写,然后运行 。debug 几乎不能用 有时候变量值根本怼不出来。log 才是王道
以前 emacs 写用 log,现在 Gogland 写还是 log -_-
写 log, 偶尔用 Gogland 的 debug 功能。
好像之前有人贴过一个类似 gdb 的东东。忘记叫什么了。当时主要目标是 go 的 coredump,你可以搜搜看
一般 print 日志,复杂的用 Delve
Gogland 自带 delve 调试,还是很好用的
gogland 打断点一直很好用,vscode 安装 godebug 之后也可以实现断点。只不过你要清楚你的断点是在哪个 gorutine 里面
print 调试,日志做好分级
绝大部分的调试工具,在分布式场景下,毫无作为。只有张弛有度、串联有序的日志,才是最好的帮手
打日志,完备的日志,不管是调试,还是运行出错找错,都是极好的
为什么 “绝大部分的调试工具,在分布式场景下,毫无作为” 可以举个例子吗…?
分布式场景里充斥着心跳、超时、远程调用,这些东西严重依赖时序。
而想要通过调试工具来分析,很大程度上依赖于把程序停下来,分析、控制当时程序内部的状态。
一旦停下来,程序的很多表现就和一直跑着时有很大区别了。
如果说不停下来,仅仅作为一层监控,那 log 更加合适
我说的不是很好,可以搜一下相关的关键字
vscode 大法好
自带 delve 啊
虽然 atom 也带 我就是因为 atom 崩溃投奔 vscode 了
发现 vscode 各种好 到处安利
最后用了 Goland … 公司是微服务 vscode 貌似不能一个窗口同时 debug 多个 go
在Golang中进行Debug,Print和Delve都是有效的手段,但各自有不同的适用场景和优缺点。
Print方法,即使用fmt包等输出语句在代码中打印变量值和程序状态,是一种简单直接的调试方式。它非常适合快速定位一些简单的问题,但在复杂应用中可能不够高效,且容易使代码变得杂乱。
相比之下,Delve是一个功能强大的Go语言专用调试工具,它提供了断点设置、单步执行、变量检查等丰富的调试功能。使用Delve,你可以更精确地控制程序的执行流程,深入了解程序在特定点的状态。这对于调试复杂问题或需要深入分析程序行为的情况非常有用。
因此,在选择调试方法时,建议根据具体需求和场景来选择。对于简单问题或需要快速定位错误的情况,Print方法可能更快捷;而对于复杂问题或需要深入分析的情况,Delve则提供了更强大的调试能力。
总之,无论选择哪种方法,熟练掌握并灵活运用都是提高调试效率和开发质量的关键。