之前介绍了怎么将kernel中所有函数dump出来,现在还有一种方法,不仅可以把System.map中已有的函数显示出来,如果System.map地址跳跃了,也能将中间跳过的地址所对应的函数显示出来,对于想刻意隐藏的函数那是无所遁形了。
很简单,在init/main.c文件中的do_one_initcall函数里面,将传入的参数fn对应的函数打印出来
加入打印如下:
printk(" initcall %pS \n", fn);
重新编译后开机,在串口里面打印的信息将会显示调用了的所有函数。
如果没有串口,可以在终端terminal中输入dmesg命令查看。
通过这个方法可以定位系统开机死机,且无任何提示信息的情况下排查哪个模块出问题了。