V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
BiuBiuBiuX
V2EX  ›  Go 编程语言

Go 到底怎么 Debug ?? Print? Delve?

  •  
  •   BiuBiuBiuX · 2017-08-31 18:11:10 +08:00 · 2461 次点击
    这是一个创建于 2632 天前的主题,其中的信息可能已经有所发展或是发生改变。

    iOS 程序员 写 Go 遇到了 这样的问题 看 Go 社区部分支持 print 部分支持 devel 搜了点资料,说 go 并行 不适合断点调试

    能有大佬解释下 print 和 delve 的利弊吗

    19 条回复    2017-11-24 18:54:51 +08:00
    TypeErrorNone
        1
    TypeErrorNone  
       2017-08-31 18:16:22 +08:00
    m
    monsterxx03
        2
    monsterxx03  
       2017-08-31 18:21:01 +08:00
    简单问题 print, 复杂的 devel, devel 可以调试当前运行的所有 goroutine 啊,就像 gdb 调试多线程程序一样,该用就用,也没啥利弊的。
    nadoo
        3
    nadoo  
       2017-08-31 18:40:19 +08:00
    因为之前 windows 下没有好的 debug 工具,所以就习惯了曾经鄙视的 print 的方式,不搞复杂的程序感觉够用
    jarlyyn
        4
    jarlyyn  
       2017-08-31 18:52:59 +08:00 via Android
    断点 辅日志。
    jameshuazhou
        5
    jameshuazhou  
       2017-08-31 19:00:31 +08:00
    在开发的时候,加大量的 log
    hantsy
        6
    hantsy  
       2017-08-31 20:11:43 +08:00
    我非常奇怪,Go 没测试框架吗?
    gouchaoer
        7
    gouchaoer  
       2017-08-31 20:19:44 +08:00 via Android
    没法断点调试,不可能吧
    abujj
        8
    abujj  
       2017-08-31 20:21:32 +08:00 via Android
    经过写了一年的经历告诉你。几乎盲写,然后运行 。debug 几乎不能用 有时候变量值根本怼不出来。log 才是王道
    pubby
        9
    pubby  
       2017-08-31 20:28:14 +08:00
    以前 emacs 写用 log,现在 Gogland 写还是 log -_-
    xrlin
        10
    xrlin  
       2017-08-31 20:31:28 +08:00
    写 log, 偶尔用 Gogland 的 debug 功能。
    owt5008137
        11
    owt5008137  
       2017-08-31 21:32:40 +08:00 via Android
    好像之前有人贴过一个类似 gdb 的东东。忘记叫什么了。当时主要目标是 go 的 coredump,你可以搜搜看
    mifly
        12
    mifly  
       2017-08-31 21:56:05 +08:00
    一般 print 日志,复杂的用 Delve

    Gogland 自带 delve 调试,还是很好用的
    HarrisonZ
        13
    HarrisonZ  
       2017-08-31 22:08:16 +08:00
    gogland 打断点一直很好用,vscode 安装 godebug 之后也可以实现断点。只不过你要清楚你的断点是在哪个 gorutine 里面
    wweir
        14
    wweir  
       2017-08-31 22:33:29 +08:00   ❤️ 1
    print 调试,日志做好分级

    绝大部分的调试工具,在分布式场景下,毫无作为。只有张弛有度、串联有序的日志,才是最好的帮手
    BBCCBB
        15
    BBCCBB  
       2017-09-01 10:37:08 +08:00
    打日志,完备的日志,不管是调试,还是运行出错找错,都是极好的
    BiuBiuBiuX
        16
    BiuBiuBiuX  
    OP
       2017-09-01 14:30:41 +08:00
    @wweir 为什么 “绝大部分的调试工具,在分布式场景下,毫无作为” 可以举个例子吗...?
    wweir
        17
    wweir  
       2017-09-01 14:54:06 +08:00
    @BiuBiuBiuX 分布式场景里充斥着心跳、超时、远程调用,这些东西严重依赖时序。
    而想要通过调试工具来分析,很大程度上依赖于把程序停下来,分析、控制当时程序内部的状态。
    一旦停下来,程序的很多表现就和一直跑着时有很大区别了。
    如果说不停下来,仅仅作为一层监控,那 log 更加合适

    我说的不是很好,可以搜一下相关的关键字
    Muninn
        18
    Muninn  
       2017-09-26 11:12:13 +08:00   ❤️ 1
    vscode 大法好

    自带 delve 啊

    虽然 atom 也带 我就是因为 atom 崩溃投奔 vscode 了
    发现 vscode 各种好 到处安利
    BiuBiuBiuX
        19
    BiuBiuBiuX  
    OP
       2017-11-24 18:54:51 +08:00
    @Muninn 最后用了 Goland ... 公司是微服务 vscode 貌似不能一个窗口同时 debug 多个 go
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5580 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:38 · PVG 14:38 · LAX 22:38 · JFK 01:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.