打印函数调用关系的函数就是dump_stack(),该函数不仅可以用在系统出问题的时候,我们在调试内核的时候,可以通过dump_stack()函数的打印信息更方便的了解内核代码执行流程。 dump_stack()函数的实现和系统结构紧密相关,本文介绍ARM体系中dump_stack()函数的实现。该函数定义在arch/arm/kernel/traps.c文件中,调用dump_s...
#include <linux/kernel.h> void function() { // 代码逻辑 dump_stack(); // 触发调用堆栈打印信息 } 测试代码示例 接下来结合之前所学的创建proc节点,最后我写了个综合测试bug_on,warn_on,dump_stack的demo file:oops_test.c #include <linux/proc_fs.h> #include <linux/init.h> #include <linux/...
随便写了一个模块test.c,test.c代码如下: #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <asm/ptrace.h> void aaa(int a); void bbb(int b); void ccc(int c); void aaa(int a) { int b = a + 10; bbb(b); } void bbb(int b) { int c ...
1 简介 说起dump_stack() ,相信从事 Linux 内核或者驱动相关开发的同行对于此函数肯定不陌生。我们经常会用到此函数来对自己的代码进行 debug,可以快速帮助开发者理清函数调用流程,或者说解决 bug…… 首先我们来看一下 dump_stack 的打印,相信很多人都遇到过 : [ 4.778339] <1>-(1)[258:charger_thread]CPU:...
#include<linux/kernel.h> voidfunction(){ // 代码逻辑 BUG_ON(some_critical_condition);// 如果some_critical_condition为true,则触发BUG } 你会发现BUG_ON比BUG内部多了条件参数传入判断,BUG_ON宏的典型用法是检查某个条件是否为真,如果为真就触发一个BUG,终止内核的运行。
1/**2* sprint_symbol_no_offset - Look up a kernel symbol and return it in a text buffer3* @buffer: buffer to be stored4* @address: address to lookup5*6* This function looks up a kernel symbol with @address and stores its name7* and module name to @buffer if possible. If no ...
BUG(); //需要linux 内核开启General setup->Configure standard kernel features->BUG() support 1. 2. 或者使用更好的形式: BUG_ON(bad_thing); 1. 可以用panic()引发更严重的错误。调用panic()不但会打印错误消息(Oops)而且还会挂起整个系统。显然,你只应该在极端恶劣的情况下使用它: ...
dump_stack 是 Linux 内核开发中常用的一个调试工具,用于快速分析函数调用流程或定位 bug。其功能通过 dump_stack 函数在 kernel/lib/dump_stack.c 文件中实现。本文将深入剖析 dump_stack 的工作原理与实现流程。dump_stack 的核心功能分为两部分:打印 info 信息和打印调用栈信息。实现主要通过 dump_...
linux内核调试技巧之一 dump_stack【转】 在内核中代码调用过程难以跟踪,上下文关系复杂,确实让人头痛 调用dump_stack()就会打印当前cpu的堆栈的调用函数了。 如此,一目了然的就能看到当前上下文环境,调用关系了 假设: 遇到uvc_probe_video这么一个函数,不知道它最终是被谁调用到的,根据linux设备模型,初步推测,probe...
dump_stack()函数的实现和系统结构紧密相关,本文介绍ARM体系中dump_stack()函数的实现。该函数定义在arch/arm/kernel/traps.c文件中,调用dump_stack()函数不需要添加头文件,基本上在内核代码任何地方都可以直接使用该函数。 相关基本知识 读者需要了解一些ARM汇编的基本知识。在讲代码之前,我先简单说说内核中函数调用...