Rumah >pembangunan bahagian belakang >Golang >Bolehkah Pergi Mengesan Lampiran Debugger GoLand Seperti `Debugger.IsAttached` C#?

Bolehkah Pergi Mengesan Lampiran Debugger GoLand Seperti `Debugger.IsAttached` C#?

Susan Sarandon
Susan Sarandonasal
2024-12-06 05:22:09931semak imbas

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

Mengesan Pelaksanaan Penyahpepijat GoLand dalam Program

Dalam C#, program yang sedang berjalan boleh mengenal pasti sama ada ia berada di bawah pengawasan penyahpepijat melalui kaedah "System.Diagnostics.Debugger.IsAttached" .

Bolehkah Go mencapai fungsi yang serupa? Ini amat diingini untuk melumpuhkan tamat masa semasa kod sedang dinyahpepijat.

Secara khusus, soalan ini timbul dalam konteks penggunaan penyahpepijat GoLand.

Penyelesaian

Menggunakan Teg Binaan:

  1. Buat dua fail sumber Go: "isdelve/delve.go" dan "isdelve/nodelve.go."
  2. Dalam "isdelve/delve.go," tambah teg binaan berikut:

    // +build delve
  3. Dalam "isdelve/nodelve.go," tambah binaan berikut tag:

    // +build !delve
  4. Tambahkan pengisytiharan "package isdelve" pada kedua-dua fail dan isytiharkan pemalar "Didayakan":

    package isdelve
    
    const Enabled = true
    
    // or
    
    package isdelve
    
    const Enabled = false
  5. Buat fail Go ketiga, "a.go," yang mengimport "isdelve" pakej:

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

Mengkonfigurasi GoLand:

  1. Buka tetingkap "Run/Debug Configurations" dalam GoLand.
  2. Tambahkan "-tags=delve" pada "argumen alat Go" bahagian.

Penggunaan:

  • Apabila menjalankan "go run a.go" di luar GoLand, program akan melaporkan "deve false."
  • Apabila menggunakan dlv untuk nyahpepijat, gunakan "dlv debug --build-flags='-tags=delve' a.pergi." Ini akan melaporkan "deve true."

Alternatif:

Sebagai alternatif, perintah "set" delve boleh menetapkan pembolehubah secara manual selepas memulakan penyahpepijat.

Atas ialah kandungan terperinci Bolehkah Pergi Mengesan Lampiran Debugger GoLand Seperti `Debugger.IsAttached` C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn