在/ proc / kallsyms中找不到init_task符号(内核4.5.4-1-ARCH)

问题描述 投票:1回答:1

我正在尝试查找线程的task_struct地址。首先,我需要获取task_structinit_task地址,然后迭代整个列表,最后获得特定线程的task_structtask_structinit_task可以通过命令

/proc/kallsyms轻松获得。

grep "\<init_task\>" /proc/kallsyms

当我使用旧的内核版本(3.12)时,此方法起作用。但是当我切换到新版本(4.5)时,这个想法在一开始就失败了。因为符号init_task/proc/kallsyms中消失了。但是,当我检查源代码时,可以看到符号init_task已导出(http://lxr.free-electrons.com/source/init/init_task.c?v=4.5#L18)。为什么它没有显示在/proc/kallsyms中?还是有其他方法可以从用户空间程序获取init_task的地址?

linux-kernel symbols
1个回答
0
投票

尝试使用CONFIG_KALLSYMS_ALL选项集进行编译。没有它,kallsyms似乎仅包含.textinit.text部分中的符号:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/link-vmlinux.sh#n152https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/kallsyms.c#n250

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.