You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

dlv attach进程触发panic: <nil> not an Int问题求助

Delve attach PID 1 触发 panic 问题排查与解决

问题现象

执行dlv attach 1时触发panic,报错栈信息如下:

dlv attach 1
panic: <nil> not an Int

goroutine 1 [running]:
go/constant.Int64Val(0x0, 0x0, 0xc, 0xc0074ff300)
        /usr/local/go/src/go/constant/value.go:499 +0x19d
github.com/go-delve/delve/pkg/proc.(*Variable).parseG.func1(0xba0c52, 0xc, 0x9)
        /home/go/src/delve/pkg/proc/variables.go:822 +0x6b
github.com/go-delve/delve/pkg/proc.(*Variable).parseG(0xc0074fe200, 0xc000244000, 0xc0074fe200, 0x0)
        /home/go/src/delve/pkg/proc/variables.go:846 +0x44b
github.com/go-delve/delve/pkg/proc.GetG(0xcb1b60, 0xc000244000, 0xc000244000, 0x7fb53c4fe2a8, 0xc000228580)
        /home/go/src/delve/pkg/proc/variables.go:247 +0xd1
github.com/go-delve/delve/pkg/proc.NewTarget(0xcb4760, 0xc000228580, 0xc000051840, 0x1a, 0xc000212420, 0x1, 0x1, 0xc00016e520, 0x200, 0xc0001cb6b8, ...)
        /home/go/src/delve/pkg/proc/target.go:128 +0x22d
github.com/go-delve/delve/pkg/proc/native.(*nativeProcess).initialize(0xc000228580, 0xc000051840, 0x1a, 0xc000212420, 0x1, 0x1, 0x0, 0xc0002688c0, 0x10000c0001cb750)
        /home/go/src/delve/pkg/proc/native/proc.go:305 +0x19e
github.com/go-delve/delve/pkg/proc/native.Attach(0x1, 0xc000212420, 0x1, 0x1, 0xc0001cb898, 0xc0001cb7a0, 0x40bb0b)
        /home/go/src/delve/pkg/proc/native/proc_linux.go:132 +0x1bb
github.com/go-delve/delve/service/debugger.(*Debugger).Attach(0xc0002146c0, 0x1, 0x0, 0x0, 0xc0001cb858, 0x1, 0x1)
        /home/go/src/delve/service/debugger/debugger.go:295 +0x216
github.com/go-delve/delve/service/debugger.New(0xc0002687e0, 0xc000212560, 0x0, 0x0, 0x0, 0x0, 0x0)
        /home/go/src/delve/service/debugger/debugger.go:121 +0x7cd
github.com/go-delve/delve/service/rpccommon.(*ServerImpl).Run(0xc000214600, 0xc000214600, 0xc00024e5a0)
        /home/go/src/delve/service/rpccommon/server.go:112 +0xc8
github.com/go-delve/delve/cmd/dlv/cmds.execute(0x1, 0xc000212560, 0x0, 0x0, 0xc000245f80, 0x0, 0x0, 0x3, 0x0)
        /home/go/src/delve/cmd/dlv/cmds/commands.go:774 +0x501
github.com/go-delve/delve/cmd/dlv/cmds.attachCmd(0xc000238900, 0xc000212560, 0x1, 0x1)
        /home/go/src/delve/cmd/dlv/cmds/commands.go:606 +0xc0
github.com/spf13/cobra.(*Command).execute(0xc000238900, 0xc000212510, 0x1, 0x1, 0xc000238900, 0xc000212510)
        /home/go/pkg/mod/github.com/spf13/cobra@v0.0.0-20170417170307-b6cb39589372/command.go:647 +0x231
github.com/spf13/cobra.(*Command).ExecuteC(0xc0002386c0, 0xc0002386c0, 0xb99853, 0x6)
        /home/go/pkg/mod/github.com/spf13/cobra@v0.0.0-20170417170307-b6cb39589372/command.go:733 +0x2bc
github.com/spf13/cobra.(*Command).Execute(...)
        /home/go/pkg/mod/github.com/spf13/cobra@v0.0.0-20170417170307-b6cb39589372/command.go:692
main.main()
        /home/go/src/delve/cmd/dlv/main.go:24 +0xc6

当前环境信息:

  • Go版本:1.14.1
  • Delve版本:1.4.0
  • 安装步骤:
    • 下载并解压Go 1.14.1到/usr/local
    • 创建GOPATH目录/home/go/bin、/home/go/pkg、/home/go/src并配置环境变量
    • 克隆derekparker/delve仓库,进入delve/cmd/dlv执行go build和go install

解决方案

1. 升级Delve版本

Delve 1.4.0存在已知的attach进程相关bug,建议升级到更高稳定版本:

# 移除旧源码
rm -rf $GOPATH/src/github.com/go-delve/delve
# 克隆官方最新仓库(原仓库已迁移到go-delve/delve)
git clone https://github.com/go-delve/delve.git $GOPATH/src/github.com/go-delve/delve
# 编译安装
cd $GOPATH/src/github.com/go-delve/delve/cmd/dlv
go install
# 验证版本
dlv version

2. 避免attach非Go进程

PID 1是系统初始化进程(init/systemd),并非Go编写的进程。Delve是Go专属调试器,无法正常attach非Go进程,这是触发panic的核心原因。请确保attach的目标是Go编译生成的进程。

3. 检查版本兼容性

Go 1.14.x建议搭配Delve 1.6.x及以上版本,避免版本不匹配导致的变量解析错误。编译Delve时必须使用当前环境的Go版本,禁止混用不同版本的Go。

4. 以root权限执行attach

部分进程需要root权限才能被调试,执行命令时添加sudo:

sudo dlv attach <目标Go进程PID>

内容的提问来源于stack exchange,提问作者fio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 07:05:02