欢迎来到代码驿站!

Linux

当前位置:首页 > 服务器 > Linux

浅谈在linux kernel中打印函数调用的堆栈的方法

时间:2021-08-02 07:29:59|栏目:Linux|点击:

在Linux内核调试中,经常用到的打印函数调用堆栈的方法非常简单,只需在需要查看堆栈的函数中加入:

dump_stack(); 或 __backtrace(); 即可

dump_stack()在~/kernel/ lib/Dump_stack.c中定义

void dump_stack(void)
{
 printk(KERN_NOTICE
 "This architecture does not implement dump_stack()/n");
}
__backtrace()的定义在~/kernel/arch/arm/lib/backtrace.S中
 
ENTRY(__backtrace)
 mov r1, #0x10
 mov r0, fp

在linux应用程序调试中,使用的方法是:

backtrace
backtrace_symbols

可以在函数中加入如下代码:

void *bt[20]; 
 char **strings; 
 size_t sz;
 sz = backtrace(bt, 20); 
 strings = backtrace_symbols(bt, sz); 
    for(i = 0; i < sz; ++i) 
        fprintf(stderr, "%s/n", strings[i]);

上一篇:Linux 2.4中netfilter框架实现

栏    目:Linux

下一篇:Linux 单个tomcat多实例部署shell脚本详解

本文标题:浅谈在linux kernel中打印函数调用的堆栈的方法

本文地址:http://www.codeinn.net/misctech/163514.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有