获取内部Go结构体的大小

deyfvvtc  于 2023-02-10  发布在  Go
关注(0)|答案(2)|浏览(160)

我一直在尝试使用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

我错过什么了吗?有更好的方法得到信息吗?

kd3sttzy

kd3sttzy1#

您可以尝试在同一个包中测试,以通过此限制.

vlju58qv

vlju58qv2#

unsafe.Sizeof(reflect.ValueOf(<nested struct>))这就是你想要得到的嵌套结构体的大小吗?
PS:这可能不是答案,但我不能发表评论。

相关问题