在 Linux 内核中,我需要找到所使用的结构的成员变量的偏移量。例如,对于 task_struct 类型的 init_task,我想要它的 pid 和任务的偏移量。
为此,我只有 vmlinux。我可以引用开源内核代码,但它可能与我的构建不同。
是否可以在没有源的情况下获得偏移量?
编辑:vmlinux 适用于 ARM,我可能并不总是能够在目标设备上运行 C 代码。
最佳答案
结构的大小和布局存在于已编译目标文件的调试信息中(如果您使用-g
编译并且不strip
)。
pahole (又名“戳洞”,在 Gentoo 中打包为 dev-util/dwarves
)读取对象的 DWARF 调试信息以输出有关结构中“洞”的信息——这对您来说可能是一个很好的起点。
关于linux - vmlinux ELF 查找给定结构成员的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1415745/