Golang Go语言中大家是怎么调试的, 每次修改都要在 Goland 上, go debug main, 真麻烦
- 用 goland 上 debug 调试, 但是每次修改, 都要重新 debug
- 用 air 热加载, 但是不能 debug
有没有啥两全其美的方法, 又能 debug, 又能热加载
Golang Go语言中大家是怎么调试的, 每次修改都要在 Goland 上, go debug main, 真麻烦
vscode 断点
更多关于Golang Go语言中大家是怎么调试的, 每次修改都要在 Goland 上, go debug main, 真麻烦的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
#1 vscode 又能 debug, 又能热加载?
写单元测试阶段性调试代码,这样即使不用热加载也非常快,单元测试基本通过后,再通过继承测试入口调试主流程逻辑。
写单元测试方法,打断点,跑测试数据集
可以试下 air + dlv, remote debugging
# .air.toml<br>[build]<br>full_bin = "dlv exec --accept-multiclient --log --headless --continue --listen :2345 --api-version 2 the-progarm"<br><br>
log.Debugf(“xxx”)
从来没用过 debug 功能。。。
go 语言编译那么快,终端跑个单元测试不就好了吗?
vscode + air, 前端一般的调试
基本不调试,go 难的问题是 并发中的问题 。普通问题单元测试就够了
盲猜动态语言转过来的
这… 我第一次见有人说 go 麻烦,不管用啥方法已经很快了呀
build 一次半小时的 C++,和 10 分钟的 java 你见过没😂
写好测试比 debug 实在多了
把功能拆分得足够细,单元测试通过后 再结合在一起 就比较容易通过了。
用 pwd ,pool man’s debugger
单测 debug 呀😅
这也麻烦?
13# Java 的类是可以热替换的,不用重新 build ,之前碰到过感觉挺神奇的,只是不知道有没有坑。
再猜一个 PHP 或者 js ,Python 不了解
c++ 写代码,基本靠日志分析 bug 的路过
偶尔用 gdb 看看堆栈
没法设置断点之类的
会导致分布式系统行为异常
基本就是 单元测试 + 日志;当然这是从之前做 C/C++养成的习惯,gdb 用来调试崩溃问题还是非常方便的
感觉在 idea 上和 goland 上启动 java 和 go 速度差不多。当然那种巨大的屎山 java 还是算了吧,半个小时都不一定能编译完。java 修改完不用重启的,可以 reload class ,坑在于极个别场景是失效的。
dlv
基本不调试 遇到 panic 看哪里 panic 去修复一下就是了
。。。。。。。。。。。。。。。。。。。。。。。。。
是不是有点不正常
一般是跑起来了手动测试业务是否正常
因为大部分需要断点的时候,都是诡异的问题,正常问题都能看出来
在Go语言(Golang)开发中,调试确实是一个重要的环节,不过不必局限于每次都在GoLand上使用go debug main
。以下是一些高效调试Go程序的策略,希望能帮助你提升效率:
-
使用Delve调试器:Delve是Go语言的官方调试器,功能强大且集成在GoLand中。你也可以在命令行中直接使用
dlv
命令进行调试,支持设置断点、单步执行、查看变量等。 -
日志输出:对于简单的错误定位和流程跟踪,合理使用
fmt.Println
或更高级的日志库(如logrus
、zap
)来输出关键变量和程序状态,是一种快速且低成本的调试方法。 -
单元测试与基准测试:编写全面的单元测试,利用
go test
命令自动运行测试,可以帮助在代码修改前后快速验证功能正确性。同时,基准测试可以评估性能变化。 -
热重载:部分开发工具支持代码热重载,即在不重启整个程序的情况下应用代码更改。虽然Go原生不支持,但可以通过一些工具和框架(如Gin框架的
gin-contrib/reload
中间件)实现部分功能的热重载。 -
远程调试:对于部署在远程服务器上的Go应用,可以使用Delve的远程调试功能,通过SSH等方式连接到服务器进行调试。
结合使用上述方法,可以显著提高Go语言开发的效率和调试的便捷性。希望这些建议对你有所帮助!