dump_stack 分析使用

dump_stack是用来回溯内核运行的信息的,打印内核信息堆栈段;

dump_stack原型:

void dump_stack(void);

1、使用这个功能时需要将内核配置勾选上;

make menuconfig -> kernel hacking--> kernel debug

2、在函数中使用:

 1 #include <linux/module.h>
 2 #include <linux/init.h>
 3 #include <linux/kprobes.h>
 4 #include <asm/traps.h>
 5  
 6 MODULE_LICENSE("Dual BSD/GPL");
 7   
 8 static int __init hello_init(void)
 9 {
10      printk(KERN_ALERT "dump_stack start\n");
11      dump_stack();
12      printk(KERN_ALERT "dump_stack over\n");
13      return 0;
14  }
15  static void __exit hello_exit(void)
16  {
17       printk(KERN_ALERT "test module\n");
18  }
19  
20 module_init(hello_init);
21 module_exit(hello_exit);

3、需要加入的头文件:

1 #include <linux/kprobes.h>
2 #include <asm/traps.h>

4、得到hello.ko之后,insmod hello.ko,打印信息如下:

 1 [ 3719.352022] usb 1-8: new high speed USB device number 11 using ehci_hcd
 2 [ 4266.252826] usb 1-8: USB disconnect, device number 11
 3 [ 5246.942980] dump_stack start
 4 [ 5246.942985] Pid: 3438, comm: insmod Not tainted 3.0.0-21-generic #35-Ubuntu
 5 [ 5246.942987] Call Trace:
 6 [ 5246.942993]  [] hello_init+0x17/0x1000 [hello]
 7 [ 5246.942999]  [] do_one_initcall+0x42/0x180
 8 [ 5246.943003]  [] sys_init_module+0xbe/0x230
 9 [ 5246.943006]  [] system_call_fastpath+0x16/0x1b
10 [ 5246.943008] dump_stack over

在不同环境下,Call Trace也可能被称为Back Trace;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏凉城

[教程]黑客级别的批量处理文件

1765
来自专栏逸鹏说道

Email系列(QQ邮箱 + 含附件的邮箱案例 + 项目实战)下

3.项目应用:https://github.com/dunitian/LoTCodeBase/tree/master/NetCode/3.常用技能/07.Ema...

3559
来自专栏landv

c语言_代码段_快说你是猪

1823
来自专栏Android先生

Gradle多渠道打包(动态设定App名称,应用图标,替换常量,更改包名,变更渠道)

最近有个需求一次要打包9个类型的App,而且常量和String.xml都有变量。虽然之前也是一直存在变量,但是每次也仅仅只打包一个。这让我每次改变量,打包9个。...

1026
来自专栏C/C++基础

CMake简介及使用实例

CMake是一个跨平台的建构系统的工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的构建文档makefile或者project文件,描...

922
来自专栏技术记录

java-FFmpeg(一) 实现视频的转码和截图功能

FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方...

6068
来自专栏小鹏的专栏

ubuntu下C++如何调用matlab程序

实验平台:   ubuntu  matlab R2016b   g++ 步骤: 1.    设置matlab的编译器 在命令行窗口下,输入并执行如下命令:m...

22410
来自专栏专注数据中心高性能网络技术研发

在Clion的IDE中指定命令行参数

最近在linux上使用Clion这个C++ IDE,感觉很好,JetBrain的产品都很不错。

4506
来自专栏数据之美

关于 xargs 参数被截断,tar 文件被覆盖的问题

问题: 目录下共 2W+ 个小文件: $ find . -type f | wc -l   20083   如果我们这样打包,会爆出 "Arg...

1796
来自专栏性能与架构

用魔数防范文件上传攻击

上传文件功能的安全风险很高,为了防范攻击,最基本的安全工作就是验证文件类型是否为系统允许的 简单的通过文件后缀来判断文件类型很不可靠,需要用更安全的方式 很多类...

3506

扫描关注云+社区