我一直在玩uprobes。为了在运行时探测特定对象,我需要知道内部 go 结构的大小。就我而言,
poll.FD
。我可以手动计算每个嵌套结构,但是如果我们使用大量嵌套结构,这可能会增加复杂性。
我的第一次尝试是使用dlv表达式,
len <variable>
。没成功Command failed: command not available
我的第二次尝试是创建一个程序来提取此信息:
package main
import (
"fmt"
"internal/poll"
"unsafe"
)
func main() {
fmt.Println("size of internal/poll FD struct:", unsafe.Sizeof(poll.FD{}))
}
当我编译上面的代码时,显示以下消息:
main.go:7:2: use of internal package internal/poll not allowed
我错过了什么吗?有更好的方法获取该信息吗?
您可以尝试通过在同一个包中进行测试来完成此限制。
unsafe.Sizeof(reflect.ValueOf(<nested struct>))
应该是您正在寻找的内容来获取嵌套结构的大小。