php小编鱼仔今天为大家介绍一个与Protogen相关的问题:Goroutine堆栈超过的情况。在使用Protogen进行开发时,有时会遇到Goroutine堆栈超过的错误提示。这个问题的出现可能会导致程序崩溃或性能下降。那么,为什么会出现这个问题,以及如何解决呢?接下来,我们将一一解答。
问题内容
最近我在 golang 中遇到了代码生成问题。我有一个巨大的原始文件,现在需要使用外部包向大多数消息添加日志记录。但是,如果我为太多字段添加日志记录,则会出现恐慌,并表示 goroutine 堆栈超出。有没有办法按块生成代码,或者仅增加生成的 goroutine 最大缓存大小?
我尝试 debug.SetMaxStack 并使用 go 代码运行生成命令,但没有任何改变,这对我来说似乎不是一个好的解决方案
解决方法
事实证明,问题是,正如 @BurakSerdar 在评论递归打印循环中所说。 所以如果你有类似的东西:
message human {
string name = 1;
human child = 2;
human parent = 3;
}
你不应该这样做:
message human {
string name = 1;
human child = 2 [(logger.field) = true];
human parent = 3;
}
我相信您想要添加到字段的其他自定义内容也是如此,如果您有消息,包含具有相同消息类型的字段
以上就是Protogen Goroutine 堆栈超过的详细内容,更多请关注编程网其它相关文章!