C 使用导出的内核符号注册模块加载跟踪点
在调试第三方调试工具时,我遇到了这段有问题的代码:C 使用导出的内核符号注册模块加载跟踪点,c,linux-kernel,C,Linux Kernel,在调试第三方调试工具时,我遇到了这段有问题的代码: tracepoint_probe_register((struct tracepoint *)kallsyms_lookup_name("__tracepoint_module_load"), hook_module_load, NULL); 此代码使其所在的可加载内核模块崩溃,因为在/proc/kallsyms中未定义内核符号\uuuu tracepoint\u module\u load 通常,这个符号是在内核的代码中定义的。 我可以看到
tracepoint_probe_register((struct tracepoint *)kallsyms_lookup_name("__tracepoint_module_load"), hook_module_load, NULL);
此代码使其所在的可加载内核模块崩溃,因为在/proc/kallsyms
中未定义内核符号\uuuu tracepoint\u module\u load
通常,这个符号是在内核的代码中定义的。
我可以看到需要定义CONFIG\u MODULES
,以便在该代码中定义\u跟踪点\u module\u load
要在
/proc/kallsyms
中定义此符号,内核是否需要使用其他一些选项构建?CONFIG\u KALLSYMS\u ALL
是必需的还是其他什么?您使用哪个版本的内核?问题是否发生在v5.5-rc1(阅读:最新的普通版本/候选版本)上?内核为v4.14.151的Debian10。对