2017-12-19 3 views
1

In C# kann die Ausführung von Programm erkennen, wenn es mit im Debugger läuft:Wie kann ich sehen, ob der GoLand Debugger im Programm ausgeführt wird?

System.Diagnostics.Debugger.IsAttached 

Gibt es ein Äquivalent in Go? Ich habe einige Timeouts, die ich gerne deaktiviert würde, während ich den Code durchtrete. Vielen Dank!

Ich verwende den GoLand Debugger.

+2

Welchen Debugger verwenden Sie? – Adrian

+1

"Gibt es ein Äquivalent in Go?" Das würde man nicht hoffen. Der Code sollte sich beim Debuggen genauso verhalten wie nicht. Andernfalls werden Sie nicht ordnungsgemäß debuggen. – Flimzy

+0

Danke @Adrian, ich habe die Frage aktualisiert. –

Antwort

1

Soweit ich weiß, gibt es keine integrierte Möglichkeit, dies in der beschriebenen Weise zu tun. Sie können jedoch mehr oder weniger dasselbe tun, indem Sie build-Tags verwenden, um anzuzeigen, dass der delve-Debugger ausgeführt wird. Sie können Build-Tags an dlv mit dem Argument --build-flags übergeben. Dies ist im Grunde die gleiche Technik, wie ich in 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 beschrieben:

// +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 Lauf wirdberichten, und läuft
dlv debug --build-flags='-tags=delve' a.go wird melden delve true.

Sie müssen dieses Flag irgendwo in der GoLand-Benutzeroberfläche übergeben. Ich kenne GoLand nicht, daher kann ich Ihnen mit diesem Teil nicht wirklich helfen.


Alternativ können Sie delve des set Befehl manuell eine Variable setzen, nachdem der Debugger zu starten.

Verwandte Themen