diff --git a/experimental/libbox/debug.go b/experimental/libbox/debug.go index 75942976..87de1249 100644 --- a/experimental/libbox/debug.go +++ b/experimental/libbox/debug.go @@ -1,6 +1,7 @@ package libbox import ( + "runtime" "time" "unsafe" ) @@ -10,3 +11,18 @@ func TriggerGoPanic() { *(*int)(unsafe.Pointer(uintptr(0))) = 0 }) } + +func TriggerGoHang(seconds int32) { + time.Sleep(time.Duration(seconds) * time.Second) +} + +func GoroutineDump() string { + buffer := make([]byte, 64*1024) + for { + n := runtime.Stack(buffer, true) + if n < len(buffer) { + return string(buffer[:n]) + } + buffer = make([]byte, 2*len(buffer)) + } +}