我一直在尝试使用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
我错过什么了吗?有更好的方法得到信息吗?
2条答案
按热度按时间kd3sttzy1#
您可以尝试在同一个包中测试,以通过此限制.
vlju58qv2#
unsafe.Sizeof(reflect.ValueOf(<nested struct>))
这就是你想要得到的嵌套结构体的大小吗?PS:这可能不是答案,但我不能发表评论。