>백엔드 개발 >Golang >C#의 `Debugger.IsAttached`와 같은 GoLand 디버거 첨부 파일을 감지할 수 있나요?

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. "isdelve"를 가져오는 세 번째 Go 파일 "a.go"를 만듭니다. 패키지:

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

GoLand 구성:

  1. GoLand에서 "실행/디버그 구성" 창을 엽니다.
  2. "Go 도구 인수"에 "-tags=delve"를 추가하세요. section.

사용:

  • GoLand 외부에서 "go run a.go"를 실행하면 프로그램에서 "delve false"를 보고합니다.
  • dlv를 사용하여 디버깅하는 경우 "dlv debug --build-flags='-tags=delve'를 사용하세요. 전에." 이는 "delve true"를 보고합니다.

대안:

또는 delve의 "set" 명령은 디버거를 시작한 후 수동으로 변수를 설정할 수 있습니다.

위 내용은 C#의 `Debugger.IsAttached`와 같은 GoLand 디버거 첨부 파일을 감지할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.