查看内核函数调用的调试方法【原创】
方法一、
通过打印函数地址,可以查看函数在哪里调用
例如:
Core.c drivers\pwm
int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns)
{
if (!pwm || period_ns == 0 || duty_ns > period_ns)
return -EINVAL;
printk("%s drivers\pwm Core.c----(%d)\r\n", __func__, __LINE__);
printk("pwm->chip->ops->config=%p----(%d)\r\n", pwm->chip->ops->config, __LINE__);
return pwm->chip->ops->config(pwm->chip, pwm, duty_ns, period_ns);
}
终端显示如下:
[ 42.550000] pwm->chip->ops->config=c001b0c0----(378)
然后可以在
如下目录
Z:\linux-3.6.5
中的System.map中找到
c001b0c0 t asiu_pwmc_config
就调用的是这个函数asiu_pwmc_config
方法二、
dump_stack()函数
欢迎交流
如有转载请注明出处
新浪博客:http://blog.sina.com.cn/u/2049150530
博客园:http://www.cnblogs.com/sky-heaven/
知乎:http://www.zhihu.com/people/zhang-bing-hua
【作者】sky
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.