我在自己的主机上试了一下dump_stack()
Makefile文件
点击(此处)折叠或打开
-
obj-m := hello.o
-
KERNELBUILD :=/lib/modules/$(shell uname -r)/build
-
default:
-
make -C $(KERNELBUILD) M=$(shell pwd) modules
-
clean:
- rm -rf *.o *.ko *.mod.c .*.cmd *.markers *.order *.symvers .tmp_versions
hello.c文件
点击(此处)折叠或打开
-
#include <linux/module.h>
-
#include <linux/init.h>
-
#include <linux/kprobes.h>
-
#include <asm/traps.h>
-
-
MODULE_LICENSE("Dual BSD/GPL");
-
-
static int __init hello_init(void)
-
{
-
printk(KERN_ALERT "dump_stack start\n");
-
dump_stack();
-
printk(KERN_ALERT "dump_stack over\n");
-
return 0;
-
}
-
static void __exit hello_exit(void)
-
{
-
printk(KERN_ALERT "test module\n");
-
}
-
-
module_init(hello_init);
- module_exit(hello_exit);
点击(此处)折叠或打开
-
#include <linux/kprobes.h>
- #include <asm/traps.h>
在运行insmod hello.ko把模块插入内核
运行dmesg
[ 3719.352022] usb 1-8: new high speed USB device number 11 using ehci_hcd
[ 4266.252826] usb 1-8: USB disconnect, device number 11
[ 5246.942980] dump_stack start
[ 5246.942985] Pid: 3438, comm: insmod Not tainted 3.0.0-21-generic #35-Ubuntu
[ 5246.942987] Call Trace:
[ 5246.942993] [
[ 5246.942999] [
[ 5246.943003] [
[ 5246.943006] [
[ 5246.943008] dump_stack over
打出运行这个模块时调用的函数
删除模rmmod hello
补充:
Android.mk文件
点击(此处)折叠或打开
-
obj-m := hello.o
-
#hello-objs := hello-world.o
-
-
KVERSION := $(ANDROID_PRODUCT_OUT)/obj/KERNEL_OBJ
-
-
all:
-
make ARCH=arm CROSS_COMPILE=arm-eabi- -C $(KVERSION) M=$(PWD) modules
-
clean:
- make -C $(KVERSION) M=$(PWD) clean