如何查看GoLand调试器是否在程序中运行?

问题描述 投票:1回答:1

在C#中,执行程序可以使用以下方法检测它是否在调试器中运行:

System.Diagnostics.Debugger.IsAttached

Go中是否有等价的?我有一些超时,我想在我踩过代码时被禁用。谢谢!

我正在使用GoLand调试器。

go delve goland
1个回答
3
投票

据我所知,没有内置的方式以你描述的方式做到这一点。但是您可以使用构建标记来执行或多或少相同的操作,以指示delve调试器正在运行。您可以使用dlv参数将构建标记传递给--build-flags。这基本上和我在How can I check if the race detector is enabled at runtime?中描述的技术相同

isdelve/delve.go

// +build delve

package isdelve

const Enabled = true

isdelve/nodelve.go

// +build !delve

package isdelve

const Enabled = false

a.go

package main

import (
    "isdelve"
    "fmt"
)

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

运行go run a.go将报告delve false,并运行 dlv debug --build-flags='-tags=delve' a.go将报告delve true

你必须在GoLand用户界面的某个地方传递那个标志。我对GoLand并不熟悉,所以我不能真正帮助你解决这个问题。


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

© www.soinside.com 2019 - 2024. All rights reserved.