文章目录
关键词:
air原理
dlv原理
air + dlv debug
目标
- windows本地开发能够使用air热重载能力,同时支持页面debug 打断点调试
- 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 myappgo 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

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



