Go 到底怎么 Debug ?? Print? Delve? - V2EX
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 2759 次点击
    这是一个创建于 2967 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 调试,日志做好分级

    绝大部分的调试工具,在分布式场景下,毫无作为。只有张弛有度、串联有序的日志,才是最好的帮手
        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     Solana     5574 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 06:32 PVG 14:32 LAX 23:32 JFK 02:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86