Heim >Backend-Entwicklung >Golang >Wie kann ich den Namen der aktuellen Funktion in Go zum Debuggen abrufen?

Wie kann ich den Namen der aktuellen Funktion in Go zum Debuggen abrufen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-13 02:58:10533Durchsuche

How Can I Get the Current Function's Name in Go for Debugging?

So erhalten Sie Funktionsnamen zum Debuggen

Um die Debugging-Funktionen zu verbessern, ist es entscheidend, den Namen der aktuellen Funktion zu erhalten. Ähnlich wie das FUNCTION-Makro von gcc bietet Go Mechanismen zum Abrufen dieser Informationen.

Betrachten Sie die folgende Funktion:

func foo() {
    trace()
}

Wir möchten, dass Informationen wie z. B. automatisch gedruckt werden "Eingabe von foo()...".

Das Laufzeitpaket bietet das Notwendige Funktionalität:

import "fmt"

func trace() {
    pc := make([]uintptr, 10)  // At least one entry required
    runtime.Callers(2, pc)

    // Get the function associated with the program counter
    f := runtime.FuncForPC(pc[0])

    // Obtain the file name, line number, and function name
    file, line := f.FileLine(pc[0])
    fmt.Printf("%s:%d %s\n", file, line, f.Name())
}

In diesem Skript füllt Callers den PC-Slice mit Programmzählern, die den aufrufenden Funktionen zugeordnet sind. Anschließend verwenden wir FuncForPC, um die Funktion abzurufen, die dem ersten Programmzähler im Slice zugeordnet ist. Schließlich stellt FileLine den Dateinamen, die Zeilennummer und den Funktionsnamen bereit, die auf der Konsole ausgegeben werden.

Das obige ist der detaillierte Inhalt vonWie kann ich den Namen der aktuellen Funktion in Go zum Debuggen abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn