乐趣区

关于golang:Golang-远程调试工具Delve-安装使用

本地调试是首选,如果能够本地调试,那天然是本地调试最不便。
然而本地环境和理论环境很多时候是不一样的,很难在本机搭建出与线上完全相同的环境,比方咱们想调试数据库、调试 rpc、调试服务注册发现,这些线上都是现成的,但在咱们本机就很难复制,再比方线上的网络和咱们本机的网络环境是不一样的,这些场景下本地调试均无奈满足咱们的需要,须要把咱们的程序部署在线上环境,能力测试。

之前不晓得近程调试,我都是改好了程序,push 到 git 上,而后到线上的机器 pull 下来,编译,运行,看日志。。。一方面,每次改完程序想测试一下,很繁琐,另一方面,残缺的开发完一个 feature,产生了几十次 commit。。。

好在,goland 有近程调试性能!

有了近程调试,在 goland 写完代码,间接同步到远端机器,而后点小虫子按钮调试,而后设断点, 就基本上跟本地调试一样不便了。

Golang debug 举荐应用 Delve 工具,我的项目地址:https://github.com/derekparke…
1. 装置

# git clone https://github.com/derekparker/delve.git
# cd delve/cmd/dlv/
# go build
# go install

或者

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

2. 调试
调试就一句语句: dlv debug main.go

# cd  helloword/
# go  mod init
# dlv  debug main.go

dlv 罕用的命令:

The following commands are available:
    args ------------------------ 打印函数参数.
    break (alias: b) ------------ 设置断点.
    breakpoints (alias: bp) ----- 输入流动断点的信息.
    call ------------------------ 复原过程,注入一个函数调用(还在试验阶段!!)
    clear ----------------------- 删除断点.
    clearall -------------------- 删除多个断点.
    condition (alias: cond) ----- 设置断点条件.
    config ---------------------- 批改配置参数.
    continue (alias: c) --------- 运行到断点或程序终止.
    deferred -------------------- 在提早调用的上下文中执行命令.
    disassemble (alias: disass) - 反汇编程序.
    down ------------------------ 将以后帧向下挪动.
    edit (alias: ed) ------------ 在 $DELVE_EDITOR 或 $EDITOR 中关上你所在的地位
    exit (alias: quit | q) ------ 退出调试器.
    frame ----------------------- 设置以后帧,或在不同的帧上执行命令.
    funcs ----------------------- 打印函数列表.
    goroutine ------------------- 显示或更改以后 goroutine
    goroutines ------------------ 列举程序 goroutines.
    help (alias: h) ------------- 打印帮忙信息.
    list (alias: ls | l) -------- 显示源代码.
    locals ---------------------- 打印局部变量.
    next (alias: n) ------------- 转到下一个源行.
    on -------------------------- 在命中断点时执行命令.
    print (alias: p) ------------ 计算一个表达式.
    regs ------------------------ 打印 CPU 寄存器的内容.
    restart (alias: r) ---------- 重启过程.
    set ------------------------- 更改变量的值.
    source ---------------------- 执行蕴含 delve 命令列表的文件
    sources --------------------- 打印源文件列表.
    stack (alias: bt) ----------- 打印堆栈跟踪信息.
    step (alias: s) ------------- 单步执行程序.
    step-instruction (alias: si)  单步执行一条 cpu 指令.
    stepout --------------------- 跳出以后函数.
    thread (alias: tr) ---------- 切换到指定的线程.
    threads --------------------- 打印每个跟踪线程的信息.
    trace (alias: t) ------------ 设置跟踪点.
    types ----------------------- 打印类型列表
    up -------------------------- 向上挪动以后帧.
    vars ------------------------ 打印包变量.
    whatis ---------------------- 打印表达式的类型.

近程调试几个步骤:
近程服务器装置 delv
近程服务器编译:
go build -gcflags “all=-N -l” test1.go

近程服务器运行:
dlv –listen=:2345 –headless=true –api-version=2 –accept-multiclient exec ./test1

本地 goland 配置连贯:

本地代码就能够设置断点就能够调试了。

参考:
https://djqueue.blog.csdn.net…
https://blog.csdn.net/zhetmdo…
https://www.jianshu.com/p/280…

退出移动版