linux内核函数调用者
答
你可以用__builtin_return_address(0)
获得致电者的功能。
来电者的来电者为__builtin_return_address(1)
等。
这是一个GCC扩展,在GCC手册中记载:http://gcc.gnu.org/onlinedocs/gcc/Return-Address.html
编辑:我也许应该指出的是,得到您的来电者的地址。如果你想要的功能名称,你可以用%pS
打印,如:
printk("Caller is %pS\n", __builtin_return_address(0));
如果您不想打印,您可以使用kallsyms_lookup()
等
答
无论帧指针需要依赖在拱门上,IIRC。对于x86,他们当然希望充分利用这些功能。还要注意,由于这个原因,内联可能会歪曲builtin_return_address的准确性。
如果您只是希望通过堆栈转储来查看某个位置是否已到达,那么最好使用dump_stack()
函数,而不是试图绕过builtin_return_address。
答
您也可以通过调用dump_stack()来打印整个调用堆栈的内容。
答
要获取调用者函数名称,可以使用下面的printk命令。 (“Caller is%pF \ n”,__builtin_return_address(0));
Muahahahaaa。哈哈......不理智。 – 2010-11-10 05:08:43