栈回溯
sunshineywz
这个作者很懒,什么都没留下…
展开
-
一种处理栈越界的方法
在linux下,栈越界写坏返回地址会导致调用栈无法回溯,这就导致我们直接使用bt没有办法查看崩溃时调用栈,今天我讲一下我最近研究出来的一种方法(虽然是原创,但可能互联网上早有人发布过此种方法,只不过我没有查到而已).废话少说,步入正题,首先我写了个简单的程序来构造一个栈溢出的情况,为了使效果更加明显,我使用了一些递归来增加调用栈的深度,代码如下:简单描述下这个代码的功能,func2里递归调用了func2,这样能有效增加调用栈深度,然后调用func3的时候,由于func3里写buf越界了,导致栈被破坏了原创 2020-07-27 22:52:17 · 763 阅读 · 0 评论 -
《coredump问题原理探究》Linux x86版3.8节栈布局之栈溢出coredump例子
现在,回到前言的栈,看一下能不能用上面的规律来恢复它的栈。前言的可执行文件是没有使用-fomit-frame-pointer编译选项的。前言的栈是这样的:(gdb) bt#0 0x6f745374 in ?? ()#1 0x57735571 in ?? ()#2 0xbff80065 in ?? ()Backtrace stopped: previous frame inner to this frame (corrupt stack?)先看一下ebp,esp的值:(gdb) i r原创 2020-07-27 22:51:22 · 958 阅读 · 0 评论 -
深入 kernel panic 流程
一、前言我们在项目开发过程中,很多时候会出现由于某种原因经常会导致手机系统死机重启的情况(重启分Android重启跟kernel重启,而我们这里只讨论kernel重启也就是 kernel panic 的情况),死机重启基本算是影响最严重的系统问题了,有稳定复现的,也有概率出现的,解题难度也千差万别,出现问题后,通常我们会拿到类似这样的kernel log信息(下面log仅以调用BUG()为例,其它异常所致的死机log信息会有一些不同之处):[ 2.052157] <2>-(2)[1:s原创 2020-06-09 14:13:41 · 1138 阅读 · 0 评论 -
Linux Kernel PANIC(三)--Soft Panic/Oops调试及实例分析
凡是非中断处理引发的模块崩溃都将导致 soft panic在这种情况下, 驱动本身会崩溃, 但是还不至于让系统出现致命性失败, 因为它没有锁定中断处理例程. 导致 hard panic的原因同样对soft panic也有用(比如在运行时访问一个空指针).1 驱动OOPS实例分析1.1 导致 OOPS 的代码模块代码, 有一处 NULL 指针异常// kerneloops.c#include <linux/kernel.h>#include <linux/init.h>原创 2020-06-06 08:33:20 · 362 阅读 · 0 评论 -
dump_stack 实现分析
1 简介说起 dump_stack() ,相信从事 Linux 内核或者驱动相关开发的同行对于此函数肯定不陌生。我们经常会用到此函数来对自己的代码进行 debug,可以快速帮助开发者理清函数调用流程,或者说解决 bug…… 首先我们来看一下 dump_stack 的打印,相信很多人都遇到过 :[258:charger_thread]CPU: 1 PID: 258 Comm: charger_t...原创 2020-05-21 12:02:28 · 3106 阅读 · 0 评论 -
Liteos稳定性基本问题排查思路
目录1 前言 41.1 目的 41.2 术语和缩写 41.3 基础命令介绍 42 稳定性相关问题 52.1 系统崩溃问题 52.2 系统卡住问题 72.3 空指针访问问题 92.4内存泄露问题 102.5内存被踩问题 102.5.1 栈踩内存问题 102.5.2 堆踩内存问题 112.5.2 全局变量踩内存问题 112.6线程死循环问题 122.7网络相关问题 12...原创 2020-05-21 12:02:09 · 1541 阅读 · 1 评论 -
利用coredump文件分析分析设备卡死问题
在应用程序异常时,如内存非法访问,越界导致程序崩溃时。Core文件将记录设备当前的堆栈信息,寄存器等值。当设备出现卡死问题时,使用主动kill掉卡死线程,使设备应用程序挂掉,生成coredump文件,这样就可以分析堆栈,查看设备具体卡主到哪里,那把锁未释放,该方法对于解决死锁问题极为方便。1 问题描述在系统测试过程中出现设备IE控件无法正常登陆的情况,通过ps命令发现davinci进程存在,没...原创 2020-05-21 12:01:26 · 850 阅读 · 0 评论 -
在Linux中如何利用backtrace信息解决问题
一、导读在程序调试过程中如果遇到程序崩溃死机的情况下我们通常多是通过出问题时的栈信息来找到出错的地方,这一点我们在调试一些高级编程语言程序的时候会深有体会,它们通常在出问题时会主动把出问题时的调用栈信息打印出来,比如我们在eclipse中调试java程序时。当这些换到Linux上的C/C++环境时情况将变的稍微复杂一些,通常在这种情况下是通过拿到出问题时产生的core文件然后再利用gdb调试来...原创 2020-04-20 08:59:39 · 211 阅读 · 0 评论 -
(重磅原创)冬之焱: 谈谈Linux内核的栈回溯与妙用
1 前言如下演示的是linux内核崩溃的一个栈回溯打印,有了这个崩溃打印我们能很快定位到在内核哪个函数崩溃,大概在函数什么位置,大大简化了问题排查过程。网上或多或少都能找到栈回溯的一些文章,但是讲的都并不完整,没有将内核栈回溯的功能用于实际的内核、应用程序调试,这是本篇文章的核心:尽可能引导读者将栈回溯的功能用于实际项目调试,栈回溯的功能很强大。本文详细讲解了基于mips、arm架构lin...原创 2020-04-20 08:59:05 · 619 阅读 · 0 评论