首页 >后端开发 >Golang >有没有办法检测Go程序中的GoLand调试器?

有没有办法检测Go程序中的GoLand调试器?

Susan Sarandon
Susan Sarandon原创
2024-11-29 07:52:10145浏览

Is There a Way to Detect the GoLand Debugger in Go Programs?

Go 程序中的 Delve 调试器检测

在某些情况下,确定 Go 程序是否在 GoLand 调试器下运行可能是有利的。在 C# 中,System.Diagnostics.Debugger.IsAttached 属性提供了此功能。

Go 中是否有等效项?

没有,目前没有内置的Go 中的方法可以像 C# 中一样检测调试器的存在。

使用构建的解决方法标签

但是,可以使用构建标签来解决此问题。通过在 delve 调试器运行时设置构建标记,您可以检查它是否存在于代码中。

  1. 创建两个文件:

    • isdelve/delve .go(定义 delve 运行时的标签)
    • isdelve/nodelve.go(定义当 delve 运行时的标签) delve 未运行)
  2. 在 a.go 中,添加:

    import (
        "isdelve"
        "fmt"
    )
    
    func main() {
        fmt.Println("delve", isdelve.Enabled)
    }
  3. 在 GoLand 中,启用“Run/”下的构建标签通过在“Go 工具”中添加 -tags=delve 来调试配置argument:'.
  4. 现在,您可以检查 delve 调试器是否正在运行:

    • 如果 go run a.go 报告 delve false,则它没有运行。
    • 如果 dlv debug --build-flags='-tags=delve' a.go 报告 delve true,则为

使用 delve 的 set 命令

作为替代方案,delve 提供了 set 命令来在启动后手动设置变量调试器。

以上是有没有办法检测Go程序中的GoLand调试器?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn