go 开发环境配置 air + dlv debug 踩坑之旅


关键词: air原理 dlv原理 air + dlv debug

目标

  1. windows本地开发能够使用air热重载能力,同时支持页面debug 打断点调试
  2. centos7支持远程开发,能够使用air热重载能力,同时支持页面debug 打断点调试

面对问题

不使用air热重载,能debug;使用air热重载,不能用debug了。

关联issue: 这个工具不支持debug吗 · Issue #523 · air-verse/air

项目支持air 热重载

# 下载依赖
go install github.com/cosmtrek/air@latest

# 验证安装
air -v

# 生成.air.toml配置文件
air init

# 启动air
air

windows .air.toml注意事项

在这里插入图片描述

air启动热加载效果

在这里插入图片描述

dlv

dlv 下载

# 下载dlv
go install github.com/go-delve/delve/cmd/dlv@latest

dlv和goland debug GUI面板的关系

goland IDE调用dlv作为后端,通过 debug GUI面板 图形化的封装了dlv的命令;如点击“断点”按钮对应这dlv break命令。

在golang 中点击“调试”按钮,IDE会自动:

  • 用go build生成带调试信息的可执行文件

    # 编译当前项目并生成带调试信息的可执行文件
    go build -gcflags='all=-N -l' -o myapp
    

    go build: 将源代码编译成可执行文件(构建)

    -gcflags: 用于向GO编译器(gc)传递参数的标志

    all: 表示对所有包应用后续参数(如果不加all,默认只对主包生效)

    -N: 表示禁用编译器优化(N:no optimizations)。编译器优化可能会重排、合并或删除代码,禁用后能保证调试时看到的代码执行流程与源代码一致

    -l: 表示禁用内联优化(l: no inlining)。内联会将函数调用直接嵌入到调用处,禁用后调试时能正常步进(step into)函数内部

    -o: 指定输出文件的路径。编译后生成名为 “myapp” 的可执行文件(Windows 下为 myapp.exe)

  • 调用dlv debug或dlv attach启动调试

  • 将dlv返回的调试数据(断点状态等)展示在图形化界面上

dlv debug、attach、exec的区别

dlv attach: 连接到一个正在运行的进程进行调试,不会重新启动程序。适用于生产环境中出现的问题。

dlv attach PID
dlv attach myapp

dlv debug: 启动程序进入调试

dlv debug ./main.go # 调试指定的go文件
dlv debug ./cmd/myapp # 调试指定包

dlv exec: 调试已编译好的可执行文件(如main.exe)

dlv debug = go build(编译构建) + dlv exec

第一次尝试:air + dlv attach

步骤一:配置.air.toml并启动air

# .air.toml 文件修改配置
cmd = "go build -gcflags='all=-N -l' -o ./tmp/main.exe ."

# 启动air
air

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值