gpt4 book ai didi

go - 将堆栈跟踪放入字符串变量

转载 作者:IT王子 更新时间:2023-10-29 00:54:15 27 4
gpt4 key购买 nike

是否可以像这样放置堆栈跟踪...

goroutine 20 [running]:
runtime.panic(0x3a2820, 0xc2081ad4b0)
/usr/local/go/src/pkg/runtime/panic.c:279 +0xf5
testing.func·006()
/usr/local/go/src/pkg/testing/testing.go:416 +0x176
runtime.panic(0x3a2820, 0xc2081ad4b0)
/usr/local/go/src/pkg/runtime/panic.c:248 +0x18d
my.Test(0x3a2820, 0xc2081acf20, 0x3a2820, 0xc2081acf30, 0xc208056000)
/Users/usr/golang/src/my/testing.go:67 +0x572

...在字符串变量中重新格式化它并为我切断冗余信息。

伪代码如下:

package main

import (
"runtime"
)

func main() {
var stackStr string
stackStr = runtime.GetStackFromHere()
}

我试过 panic("give me stack trace from here") 但它不在 var string 中打印堆栈跟踪,而是只打印到控制台。

最佳答案

使用 runtime.Stack获取堆栈跟踪的函数:

b := make([]byte, 2048) // adjust buffer size to be larger than expected stack
n := runtime.Stack(b, false)
s := string(b[:n])

另一种方法是调用 runtime.Caller在循环中并将堆栈跟踪格式化为缓冲区。

关于go - 将堆栈跟踪放入字符串变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28712397/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com