zoukankan      html  css  js  c++  java
  • GO单步调试

    网站:https://github.com/derekparker/delve

    安装

    go get github.com/go-delve/delve/cmd/dlv
    

    启动和命令

    dlv debug main.go
    	
    	help 查看帮助
    	s 单步调试
    	si 单步调试汇编代码
    	so 跳出当前函数
    	n 下一个
    	b 加断点
    	bp 查看当前的所有断点
    	clear  清空断点
    	clearall 清空所有断点
    	t
    	args 打印函数的值
    	display 显示值
        locals 当前本地的变量
        print 打印值
        regs 单步调试汇编时使用,打印寄存器的值
        set 更新变量内存中的值
        vars 打印变量的值
        whatis 变量的类型
        config 做配置
        edit 编辑
        exit 退出
    
        堆栈的时候使用:
            deferred
            down
            frame
            stack
            up
    
        并发的时候使用:
            goroutine
            goroutines
            thread
            threads
    

    dlv使用

    (dlv) b main.main //下断点
    Breakpoint 1 set at 0x4d6542 for main.main() F:/main.go:8
    (dlv) r //运行
    Process restarted with PID 285084
    (dlv) c //执行到断点
    > main.main() F:/main.go:8 (hits goroutine(1):1 total:1) (PC: 0x4d6542)
         3: import (
         4:         "fmt"
         5:         "time"
         6: )
         7: 
    =>   8: func main() {
         9:         now := time.Now()
        10:         fmt.Println(now)
        11:         fmt.Println(now.Unix())
        12:         //模板 占位
        13:         //年 => 2006
    (dlv) s //下一步
    > main.main() F:/main.go:9 (PC: 0x4d6559)
         4:         "fmt"
         5:         "time"
         6: )
         7:
         8: func main() {
    =>   9:         now := time.Now()
        10:         fmt.Println(now)
        11:         fmt.Println(now.Unix())
        12:         //模板 占位
        13:         //年 => 2006
        14:         //月 => 01
    (dlv) s //下一步
    > time.Now() E:/time.go:1093 (PC: 0x4bccda)
      1088: // we avoid ever reporting a monotonic time of 0.
      1089: // (Callers may want to use 0 as "time not set".)
      1090: var startNano int64 = runtimeNano() - 1
      1091:
      1092: // Now returns the current local time.
    =>1093: func Now() Time {
      1094:         sec, nsec, mono := now()
      1095:         mono -= startNano
      1096:         sec += unixToInternal - minWall
      1097:         if uint64(sec)>>33 != 0 {
      1098:                 return Time{uint64(nsec), sec + minWall, Local}
    (dlv)locals //当前的变量
    (dlv)print nums //当前nums的值
    (dlv)args //当前的参数
    (dlv)so //跳出当前函数
    (dlv)b main.go:9 //第9行加断点
    (dlv)clear //删除断点
    
  • 相关阅读:
    BZOJ 3522 Hotel
    BZOJ 1864 三色二叉树
    396595
    CodeForces
    CodeForces
    CodeForces
    E. 数字串
    算术基本定理总结
    Cyclic Nacklace 杭电3746
    Period
  • 原文地址:https://www.cnblogs.com/Otiger/p/13876082.html
Copyright © 2011-2022 走看看