相关主题
{{discussion.title}}
最牛社区
首页
新主题
新回复
热门
注册
登录
大佬们平时都是怎样调试查看变量变化的? go 有哪些方便实时展示变量的库或工具?
{{ getUsernameByUid(9835) }}
发布{{ getTimeInfo('2025-04-11 18:26:54') }}
#0
{{ getUsernameByUid(9835) }}
发布{{ getTimeInfo('2025-04-11 18:26:54') }}
#0
大佬们平时都是怎样调试查看变量变化的?
调试时候总是 print 会被其他打印的信息埋没,请教大佬们 有没有可以实时输出到网页的库或者工具?最好是还能记录变量变化。expvar 有些简陋了。
{{ getUsernameByUid(869) }}
发布{{ getTimeInfo('2025-04-11 18:51:43') }}
#1
{{ getUsernameByUid(869) }}
发布{{ getTimeInfo('2025-04-11 18:51:43') }}
#1
打日志可以加点锚点,看日志时通过锚点过滤
如果有上 elk 之类的日志系统,本身就支持过滤
{{ getUsernameByUid(17330) }}
发布{{ getTimeInfo('2025-04-11 19:00:44') }}
#2
{{ getUsernameByUid(17330) }}
发布{{ getTimeInfo('2025-04-11 19:00:44') }}
#2
之前搞过很多花里胡哨的,最后还是返璞归真,print 大法好
{{ getUsernameByUid(9835) }}
发布{{ getTimeInfo('2025-04-11 19:10:28') }}
#3
{{ getUsernameByUid(9835) }}
发布{{ getTimeInfo('2025-04-11 19:10:28') }}
#3
print 太多找起来有点费劲,而且 print 不能是动态的
{{ getUsernameByUid(11955) }}
发布{{ getTimeInfo('2025-04-11 19:45:39') }}
#4
{{ getUsernameByUid(11955) }}
发布{{ getTimeInfo('2025-04-11 19:45:39') }}
#4
原来搞花里胡哨的断点什么的,最后还是 print 大法好。
太多找起来费劲就封装个方法,搞个分组筛选就行了。类似 android 的 Logcat ,挺清晰的。
{{ getUsernameByUid(16748) }}
发布{{ getTimeInfo('2025-04-11 22:37:05') }}
#5
{{ getUsernameByUid(16748) }}
发布{{ getTimeInfo('2025-04-11 22:37:05') }}
#5
直接 panic
{{ getUsernameByUid(4265) }}
发布{{ getTimeInfo('2025-04-12 07:05:31') }}
#6
{{ getUsernameByUid(4265) }}
发布{{ getTimeInfo('2025-04-12 07:05:31') }}
#6
根本不调试,直接看错误日志,一般直接就知道错误原因了。如果是空指针的话,再看看错误堆栈就差不多了。
{{ getUsernameByUid(4265) }}
发布{{ getTimeInfo('2025-04-12 07:09:30') }}
#7
{{ getUsernameByUid(4265) }}
发布{{ getTimeInfo('2025-04-12 07:09:30') }}
#7
正确输出日志,是程序员的一项基础能力。从日志输出这个维度看,10 个程序员里至少有 8 个是不合格的。
{{ getUsernameByUid(14847) }}
发布{{ getTimeInfo('2025-04-12 11:37:22') }}
#8
{{ getUsernameByUid(14847) }}
发布{{ getTimeInfo('2025-04-12 11:37:22') }}
#8
通常用 d**ecgh/go-spew 一梭子解决😂
{{ getUsernameByUid(9835) }}
发布{{ getTimeInfo('2025-04-12 14:52:45') }}
#9
{{ getUsernameByUid(9835) }}
发布{{ getTimeInfo('2025-04-12 14:52:45') }}
#9
没找到方便好用的库,还是老老实实 log fmt 吧
{{ getUsernameByUid(2279) }}
发布{{ getTimeInfo('2025-04-12 14:59:41') }}
#10
{{ getUsernameByUid(2279) }}
发布{{ getTimeInfo('2025-04-12 14:59:41') }}
#10
感觉现在用这种方式调试的不多了。推荐看看 https://blog.codingnow.com/2018/05/ineffective_debugger.html
{{ getUsernameByUid(10763) }}
发布{{ getTimeInfo('2025-04-12 16:27:00') }}
#11
{{ getUsernameByUid(10763) }}
发布{{ getTimeInfo('2025-04-12 16:27:00') }}
#11
为什么要用 print 啊?用 zerolog 等日志库啊,方便变更输出格式,输出的目标。还能根据日志等级进行筛选
{{ getUsernameByUid(13229) }}
发布{{ getTimeInfo('2025-04-12 17:52:09') }}
#12
{{ getUsernameByUid(13229) }}
发布{{ getTimeInfo('2025-04-12 17:52:09') }}
#12
直接打日志,开发模式下会输出到 console 里,线上环境输出到日志文件里,还可以通过 配置文件来控制打印不同的日志级别
有时也会配合使用 fmt.Println 来 debug
{{ getUsernameByUid(post.updatedByUid) }}
编辑于 {{ getTimeInfo(post.UpdatedAt) }}
{{ getUsernameByUid(post.uid) }}
发布于 {{ getTimeInfo(post.CreatedAt) }}
# {{post.num}}
{{ getUsernameByUid(post.updatedByUid) }}
编辑于 {{ getTimeInfo(post.UpdatedAt) }}
{{ getUsernameByUid(post.uid) }}
发布于 {{ getTimeInfo(post.CreatedAt) }}
# {{post.num}}
{{ getUsernameByPostNum(post.mentionNum) }}
登录回复
#{{nav.post.anchor}}
{{ alert.text }}
关闭