我正在阅读Linux内核代码。某些函数由函数指针调用。我想知道所有这些函数的调用顺序,所以我试图打印该函数。但我还没弄清楚如何制作它。
这是我的代码:
for (fn = initcall_levels[level]; fn < initcall_levels[level+1]; fn++) {
//printk("xhl -- %pF \n", fn);
do_one_initcall(*fn);
}
答案 0 :(得分:2)
内核printk()
支持特殊的%p
格式说明符:
符号/功能指针
%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
有关完整列表,请参阅https://www.kernel.org/doc/Documentation/printk-formats.txt。
对于您的示例,设置initcall_debug=1
内核cmdline选项可能比手动添加printk()
更好。