给定Go服务的核心转储,是否有Delve的命令可以检查内存区域?我们试图找出占用堆的内容。
上次我遇到类似的问题时,我发现了这个小包https://github.com/golang/debug。它允许获得堆的直方图并检查在崩溃之前有多少特定类型的对象。
不幸的是,它不能直接使用,您需要应用几个修复程序,可以在Pull Requests页面中找到。
objects
命令列出所有活动对象,获取一个“unk”类型的地址,然后执行reachable <address>
。它能够打印出一些文件位置。可能需要在不同的地址上运行几次以确认发现,这很耗时,但它有效。 - Dian Bakti