Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menangkap Jejak Tindanan daripada Proses Go Tanpa Gangguan?
Menangkap Timbunan Proses Go Tanpa Invasif
Untuk menangkap jejak tindanan daripada semua goroutin dalam proses Go yang sedang berjalan tanpa mengganggu pelaksanaannya, ikuti ini langkah:
Tubuhkan Pengendali Isyarat:
<code class="go">import ( "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) }</code>
Terima Isyarat SIGQUIT:
Fungsi pengendali dalam goroutine akan menangkap isyarat SIGQUIT.
Jana Jejak Tindanan:
Masa jalan.Timbunan fungsi digunakan untuk menjana surih tindanan bagi setiap goroutine.
Kendalikan Kekangan Memori:
Penimbal surih tindanan mempunyai had saiz. Jika penimbal melebihi, surih akan dipotong.
Cetak Jejak Tindanan:
Surih tindanan yang dijana akan dicetak ke output standard .
Dengan menyediakan pengendali isyarat ini, anda boleh menangkap dan memaparkan surih tindanan dengan berkesan untuk semua goroutin dalam proses Go yang sedang berjalan tanpa mengubah suai kod sumbernya atau menamatkan pelaksanaannya.
Atas ialah kandungan terperinci Bagaimana untuk Menangkap Jejak Tindanan daripada Proses Go Tanpa Gangguan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!