Dumping des piles de processus Go de manière non invasive
Un processus Go en cours d'exécution peut être analysé sans modifier son code ni y mettre fin en tirant parti de ses fonctionnalités intégrées. dans la capacité de dumping de pile.
Méthode :
Lors de l'envoi un signal SIGQUIT au processus (par exemple, en utilisant ctrl \ sous Windows ou kill -SIGQUIT process_pid sous Linux), le gestionnaire de signal défini l'interceptera et invoquera la routine de capture de trace de pile. Les traces capturées seront imprimées sur la sortie standard, fournissant un instantané détaillé des piles goroutine du processus.
Exemple de code :
<code class="go">import ( "fmt" "os" "os/signal" "runtime" "syscall" ) func main() { sigChan := make(chan os.Signal) go func() { stacktrace := make([]byte, 8192) for _ = range sigChan { length := runtime.Stack(stacktrace, true) fmt.Println(string(stacktrace[:length])) } }() signal.Notify(sigChan, syscall.SIGQUIT) // ... Process Logic }</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!