首页 > 其他 > 详细

GO单步调试

时间:2020-10-26 09:46:36      阅读:46      评论:0      收藏:0      [点我收藏+]

网站: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 //删除断点

GO单步调试

原文:https://www.cnblogs.com/Otiger/p/13876082.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!