Timbunan Proses Lambakan Go Tanpa Invasif
Proses Go yang sedang berjalan boleh dianalisis tanpa mengubah suai kodnya atau menamatkannya dengan memanfaatkannya terbina- dalam keupayaan lambakan tindanan.
Kaedah:
Apabila menghantar isyarat SIGQUIT kepada proses (cth., menggunakan ctrl \ pada Windows atau bunuh -SIGQUIT process_pid pada Linux), pengendali isyarat yang ditentukan akan memintasnya dan menggunakan rutin tangkapan surih tindanan. Surih yang ditangkap akan dicetak ke output standard, memberikan gambaran terperinci susunan goroutine proses.
Contoh Kod:
<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>
Atas ialah kandungan terperinci Bagaimanakah saya boleh membuang tindanan Proses Go Tanpa Pengubahsuaian atau Penamatan Kod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!