zoukankan      html  css  js  c++  java
  • dump_stack使用

    dump_stack可以用来查看函数调用关系,即便在内核里也可以。

    // hello.c
    #include <linux/module.h>
    #include <linux/init.h>
    #include <linux/kprobes.h>
    #include <asm/traps.h>
    
    static int __init hello_init(void)
    {
        printk(KERN_ALERT "dump_stack start
    ");
        dump_stack();
        printk(KERN_ALERT "dump_stack over
    ");
        return 0;
    }
    
    static void __exit hello_exit(void)
    {
        printk(KERN_ALERT "test module
    ");
    }
    
    module_init(hello_init);
    module_exit(hello_exit);

    makefile:

    obj-m :=hello.o
    KERNELDIR :=/lib/modules/$(shell uname -r)/build
    PWD :=$(shell pwd)
    all:
        make -C $(KERNELDIR) M=$(PWD) modules
        
    .PHONY :clean
    clean:
        rm -rf *.o *ko

    insmod hello.ko之前运行dmesg即可得到call trace。

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    微信公众号:  共鸣圈
    欢迎讨论,邮件:  924948$qq.com       请把$改成@
    QQ群:263132197
    QQ:    924948

    良辰美景补天漏,风雨雷电洗地尘
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  • 相关阅读:
    Unity3D脚本使用:物体调用物体
    Unity3D脚本使用:游戏对象访问
    Unity3D 浏览工具
    spring的工厂方法
    spring运用的设计模式
    Jquery ajax 与 lazyload的混合使用(实现图片异步加载)
    关于线程安全的一点总结
    lazyload的使用心得
    ajax原理及应用
    $.ajax和$.load的区别
  • 原文地址:https://www.cnblogs.com/welhzh/p/15294598.html
Copyright © 2011-2022 走看看