使用Delve调试Golang程序的方法与技巧

使用Delve调试Golang程序的方法与技巧 是否可以使用 delve 在正在执行的文件中导入的本地包中设置断点?能否请您告知具体操作方法?(这里指的是通过终端操作)

附带问题 - 我正在使用 Atom 编辑器,并安装了 go-debug 包(该包内部使用 delve)… 在 Atom 中是否也能实现相同的功能?(当然,除了 go-debug 之外,我也愿意安装其他包… 我主要追求的是这个功能)

1 回复

更多关于使用Delve调试Golang程序的方法与技巧的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


是的,可以使用Delve在正在执行的Go程序中为导入的本地包设置断点。以下是具体操作方法:

终端操作方法

  1. 启动Delve调试器
dlv debug your_main_file.go
  1. 在本地包中设置断点
# 方法1:按函数名设置断点
break your_local_package.YourFunctionName

# 方法2:按文件路径和行号设置断点
break /path/to/your/local/package/file.go:42

# 方法3:使用包路径设置断点
break github.com/yourusername/yourproject/yourpackage.YourFunction
  1. 开始执行程序
continue
  1. 查看已设置的断点
breakpoints

完整示例: 假设你有以下项目结构:

project/
├── main.go
└── pkg/
    └── utils/
        └── helper.go

在helper.go中设置断点:

# 启动调试
dlv debug main.go

# 在utils包的ProcessData函数设置断点
(dlv) break pkg/utils.ProcessData

# 或在具体文件行号设置断点
(dlv) break ./pkg/utils/helper.go:15

# 开始执行
(dlv) continue

Atom编辑器中的实现

使用go-debug包确实可以实现相同的功能:

  1. 在Atom中安装go-debug包
apm install go-debug
  1. 配置调试

    • 打开你的Go项目
    • Ctrl+Shift+D打开调试面板
    • 点击配置按钮创建launch.json
  2. 在本地包中设置断点

    • 直接打开本地包中的源文件(如pkg/utils/helper.go
    • 在行号旁边点击设置断点(红色圆点)
    • 开始调试,当执行到该包中的代码时会自动暂停
  3. 示例配置(在项目根目录创建.atom/launch.json):

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug Go",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "${workspaceRoot}",
            "showLog": true
        }
    ]
}

替代方案:如果go-debug无法满足需求,可以考虑安装go-plus包,它提供了更完整的Go语言支持,包括调试功能。

在Atom中设置断点的操作与终端类似 - 只需在本地包文件的相应行号旁点击即可设置断点,调试器会在执行到该位置时暂停。

回到顶部