获取内部go结构的大小

问题描述 投票:0回答:2

我一直在玩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

我错过了什么吗?有更好的方法获取该信息吗?

go struct sizeof delve uprobe
2个回答
0
投票

您可以尝试通过在同一个包中进行测试来完成此限制。


0
投票

unsafe.Sizeof(reflect.ValueOf(<nested struct>))
应该是您正在寻找的内容来获取嵌套结构的大小。

© www.soinside.com 2019 - 2024. All rights reserved.