在C#中,执行程序可以使用以下方法检测它是否在调试器中运行:
System.Diagnostics.Debugger.IsAttached
Go中是否有等价的?我有一些超时,我想在我踩过代码时被禁用。谢谢!
我正在使用GoLand调试器。
据我所知,没有内置的方式以你描述的方式做到这一点。但是您可以使用构建标记来执行或多或少相同的操作,以指示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
命令在启动调试器后手动设置变量。