首页 >后端开发 >Golang >Go 可以像 C# 的 `Debugger.IsAttached` 一样检测 GoLand 调试器附件吗?

Go 可以像 C# 的 `Debugger.IsAttached` 一样检测 GoLand 调试器附件吗?

Susan Sarandon
Susan Sarandon原创
2024-12-06 05:22:09903浏览

Can Go Detect GoLand Debugger Attachment Like C#'s `Debugger.IsAttached`?

检测程序中的 GoLand 调试器执行

在 C# 中,正在运行的程序可以通过“System.Diagnostics.Debugger.IsAttached”方法识别其是否处于调试器监督之下.

Go 可以实现类似的功能吗?这对于在调试代码时禁用超时特别有用。

具体来说,这个问题是在使用 GoLand 调试器的上下文中出现的。

解决方案

使用构建标签:

  1. 创建两个Go源文件: “isdelve/delve.go”和“isdelve/nodelve.go。”
  2. 在“isdelve/delve.go”中,添加以下构建标签:

    // +build delve
  3. 在“isdelve/nodelve.go”中,添加以下构建标签:

    // +build !delve
  4. 向两个文件添加“package isdelve”声明并声明“Enabled”常量:

    package isdelve
    
    const Enabled = true
    
    // or
    
    package isdelve
    
    const Enabled = false
  5. 创建第三个 Go 文件“a.go”,它导入“isdelve” package:

    package main
    
    import (
        "isdelve"
        "fmt"
    )
    
    func main() {
        fmt.Println("delve", isdelve.Enabled)
    }

配置 GoLand:

  1. 在 GoLand 中打开“运行/调试配置”窗口。
  2. 将“-tags=delve”添加到“Go 工具参数”中

用法:

  • 在 GoLand 之外运行“go run a.go”时,程序会报告“delve false”。
  • 使用 dlv 调试时,使用“dlv debug --build-flags='-tags=delve'走吧。”这将报告“delve true。”

替代方案:

或者,delve 的“set”命令可以在启动调试器后手动设置变量。

以上是Go 可以像 C# 的 `Debugger.IsAttached` 一样检测 GoLand 调试器附件吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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