Linux kernel 如何在Linux内核中用函数指针打印函数名?

Linux kernel 如何在Linux内核中用函数指针打印函数名?,linux-kernel,Linux Kernel,我正在阅读Linux内核代码。有些函数由函数指针调用。我想知道所有这些函数的调用顺序,所以我试着打印函数。但我还没弄明白怎么做 这是我的密码: for (fn = initcall_levels[level]; fn < initcall_levels[level+1]; fn++) { //printk("xhl -- %pF \n", fn); do_one_initcall(*fn); } for(fn=initcall_levels[level];fn @ TeD

我正在阅读Linux内核代码。有些函数由函数指针调用。我想知道所有这些函数的调用顺序,所以我试着打印函数。但我还没弄明白怎么做

这是我的密码:

for (fn = initcall_levels[level]; fn < initcall_levels[level+1]; fn++) {
    //printk("xhl -- %pF \n", fn);
    do_one_initcall(*fn);
}
for(fn=initcall_levels[level];fn
内核的
printk()
支持特殊的
%p
格式说明符:

符号/函数指针 有关完整列表,请参阅


对于您的示例,设置<代码> InCaldBebug(1)<代码>内核CMDLIN选项可能是一个更好的方法,而不是手动添加<代码> Primtk()。< /P> @ TeDyxIon 53:如果答案对您有用,请考虑。

    %pF     versatile_init+0x0/0x110
    %pf     versatile_init
    %pS     versatile_init+0x0/0x110
    %pSR    versatile_init+0x9/0x110
            (with __builtin_extract_return_addr() translation)
    %ps     versatile_init
    %pB     prev_fn_of_versatile_init+0x88/0x88