這是從 Joey 的 Who call me – kernel版 看來的

在 Linux kernel 中可以使用 sprint_symbol() 來查看函式指標指到的函式名稱和 stack 位址

用法相當簡單
假設有個加法函式
int add(int augend, int addend);

和函式指標
int (*func)(int, int);

且這函式指標指向加法函式
func = add;

接著以 sprint_symbol() 取得 func 指向的函式名稱和 stack 位址
char fname[KSYM_SYMBOL_LEN];
sprint_symbol(fname, func);

利用 printk() 就可以印出 函式名稱和 stack 位址
printk(KERN_INFO "%s\n", fname);

藉由這函式就可以很方便追蹤 kernel 的 函式呼叫流程

arrow
arrow
    全站熱搜

    smalldd 發表在 痞客邦 留言(0) 人氣()