linux内核源代码分析小技巧

来源:互联网 发布:python time.clock 编辑:程序博客网 时间:2024/05/21 10:32

1.在内核调试时,我们需要跟踪函数调用过程,在这时,我们经常会碰到函数指针的情况,对于某个函数指针的赋值,如果直接使用sourceinsight来搜索可能有几十个的赋值语句,那么,我们怎么跟踪到具体的函数处呢?如何打印出函数指针的函数名?

%p:打印裸指针(raw pointer)

%pF可打印函数指针的函数名和偏移地址

%pf只打印函数指针的函数名,不打印偏移地址。

如printk("%pf",func[0]->action); 结果:
my_Set

2.使用__FILE__,__FUNCTION__,__LINE__来定位执行过程中出错的位置。

3.查看指针函数实际调用了哪个函数:

1. 在内核中放置打印函数,打印出函数的地址。

2. arm-linux-addr2line 0xXXXXXXXX -e vmlinux-f

查看谁调用了这个函数:

1. 在被调用函数里放置打印函数,加参数:__builtin_return_address(0)

2. arm-linux-addr2line 0xXXXXXXXX -e vmlinux-f

4.在内核中代码调用过程难以跟踪,上下文关系复杂,确实让人头痛

调用dump_stack()就会打印当前cpu的堆栈的调用函数了。

如此,一目了然的就能看到当前上下文环境,调用关系了

0 0