
crash
文章平均质量分 84
shuai_wen
这个作者很懒,什么都没留下…
展开
-
Android下打印调试堆栈方法
打印堆栈是调试的常用方法,一般在系统异常时,我们可以将异常情况下的堆栈打印出来,这样十分方便错误查找。实际上还有另外一个非常有用的功能:分析代码的行为。android代码太过庞大复杂了,完全的静态分析经常是无从下手,因此通过打印堆栈的动态分析也十分必要。Android打印堆栈的方法,简单归类一下 1. zygote的堆栈dump实际上这个可以同时dump jav转载 2016-03-09 07:38:07 · 1132 阅读 · 0 评论 -
怎样分析crash dump(空指针)
以简单的系统提供的crash方法为例,echoc > /proc/sysrq-trigger.得到crash文件后,一般情况下,最想看到的是错误类型和发生错误时的registers和backtrace.可以通过命令log| tail -200得到,意思是得到log文件的最后200行:crash>log | tail -200[2207.597488:0] Unable to原创 2014-02-13 17:47:17 · 4185 阅读 · 0 评论 -
怎样保存kernel crash dump 文件
1、概述实现Linuxkernel crashdump的保存,包括两部分。当kernel异常后,需要系统重启,且重启方式和正常的重启(上电重启)区别开;当系统重启后,判断重启的原因,如果是内核中设置的重启模式,则把RAM保存成ELF格式的文件,以使能使用Linux提供的crash分析工具。2、kernelcrash发生后的过程Fig1当数据访问异常时原创 2014-02-13 17:25:55 · 3107 阅读 · 0 评论 -
利用ftrace跟踪内核static tracepoint——实例writeback event
摘要:和很多linux内核子系统一样,static tracepoint有很多层次,其中某个层次都展示给不同层次的开发者来满足他们的不同需求。关于linux tracepoint的详细信息,我们可以在linux内核文档Documentation/trace/tracepoints.txt和 samples/tracepoints这两个地方找到。大致来说,对tracepoints本身的定义是第一个层转载 2014-02-11 11:07:05 · 1074 阅读 · 0 评论 -
linux下的内核测试工具——perf使用简介
摘要:Perf是Linux kernel自带的系统性能优化工具。Perf的优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature。pef可以用于查看热点函数,查看cashe miss的比率,从而帮助开发者来优化程序性能。本文来源:http://blog.youkuaiyun.com/trochiluses/article/details/1026转载 2014-02-11 11:03:41 · 1583 阅读 · 0 评论 -
ftrace:event的实现原理和使用方法
跟踪timer事件include/trace/events/timer.h文件中定义了一组DEFINE_EVENT and TRACE_EVENT两者有什么区别?kernel/timer.c定义了一组:static inline void debug_init(struct timer_list *timer){ debug_timer_init(ti原创 2014-02-11 12:38:46 · 8087 阅读 · 0 评论 -
crash commands
PrerequisitesThe crash utilityhas the following prerequisites:kernelobject file:A vmlinux kernelobject file, often referred to as the namelist inthis document, which must havebeen buil原创 2014-02-10 14:48:07 · 4763 阅读 · 0 评论 -
怎样看bt -f的数据
bt -fPID: 2159 TASK: d5256e20 CPU: 1 COMMAND: "m.android.phone" #0 [] (__raw_spin_lock_irqsave) from [] [PC: c063d51c LR: c063d568 SP: d406d958 SIZE: 32] d406d958: 00000000 d40原创 2014-02-10 14:37:47 · 1456 阅读 · 0 评论 -
遇到的crash及分析
1. 使用 ioremap申请到一块memory, 但使用更大的内存。 iomap_address = (void __iomem *)ioremap( 0x80000000, 10M); memset(iomap_address, 0, 20M); 申请了10M的虚拟地址,但使用了20M,必然data abort.从kerenl dump详细分析:原创 2013-07-27 08:50:24 · 2647 阅读 · 1 评论 -
objdump的使用
gcc命令objdump用法arm-none-linux-gnueabi-objdump -D bld.pad-706.b0101.tl7689.nusmartQA-user_4.2_201401011136.vmlinux | lessarm-none-linux-gnueabi-objdump在编译服务器的路径下。$ gcc -o hello hello1.c -lm转载 2014-01-14 13:43:35 · 2813 阅读 · 0 评论 -
crash sym command
sym: 用途:translate a symbol to its virtual address, or vice-versa虚拟地址和符号间的转化。crash> help symNAME sym - translate a symbol to its virtual address, or vice-versa SYNOPSIS sym [-l] | [原创 2013-08-18 09:28:21 · 1509 阅读 · 0 评论 -
怎样使用sysrq
Linux Magic System Request Key Hacks Documentation for sysrq.c* What is the magic SysRq key?It is a 'magical' key combo you can hit which the kernel will respond to regardless of whatever else it原创 2014-01-12 11:37:39 · 4539 阅读 · 0 评论 -
怎样分析crash dump(软件看门狗超时)
软件看门狗超时1.Log | tail -xxx从log得知,发生softlock的CPU为CPU0[ 240.220702:0] BUG: soft lockup -CPU#0stuck for 22s! [kworker/u:2:803][ 240.227296:0] Modules linked in:[ 240.227305:0][原创 2014-02-13 17:58:51 · 2566 阅读 · 0 评论 -
怎样分析crash dump(内存错误)
Memory错误在内核中,内存是以cache的形式组织的,每个对象类型对应一个cache,如(inod_cache,dentry_cache, buffer_head,vm_area_strutct等);每个cache包含多个slab(slab由一个或多个页组成,这些页物理上是连续的);每个slab包含多个初始化的对象。Cache可以分为两类【kmalloc使用的和其他】,当然他们是用原创 2014-02-13 18:12:56 · 14329 阅读 · 0 评论 -
ftrace macro
* UsageTwo elements are required for tracepoints :- A tracepoint definition, placed in a header file.- The tracepoint statement, in C code.数据结构和宏定义在文件include/linux/tacepoint.hstruc原创 2016-03-19 13:43:32 · 686 阅读 · 0 评论 -
ftrace framework
//--------------------------------------------------------------------------// ftrace.txtIntroduction------------Ftrace is an internal tracer designed to help out developers anddesig原创 2016-03-19 13:41:33 · 675 阅读 · 0 评论 -
pstore 从oops发生到保存dmesg的过程
./kernel/panic.c:13:#include./kernel/panic.c:136: kmsg_dump(KMSG_DUMP_PANIC);./kernel/panic.c:411: kmsg_dump(KMSG_DUMP_OOPS);linux/kmsg_dump.h的内容enumkmsg_dump_reason {KMSG_DUMP_UNDEF,K原创 2015-12-06 20:22:17 · 6333 阅读 · 2 评论 -
ramoops&pstore简要说明
1. pstorepstore是persistent storage的缩写。内核发生异常时如果能将日志等信息保存下来不丢失,那么就可以通过这些信息来定位问题。不同的平台可以提供的存储位置不同,例如有些平台支持硬盘,有些不支持。除了平台差异,异常类型也决定了在发生异常时该存储位置是否还可用。pstore的目标是提供一套通用的接口用来存储异常信息。pstore以文件系统的形式提供用户空转载 2015-12-06 20:15:11 · 1475 阅读 · 0 评论 -
使用ftrace的方法
有两种方法使用 ftrace:使用 tracerThe TracersHere is the list of current tracers that may be configured.“function”Function call tracer to trace all kernel functions.“function_graph”Simi原创 2015-09-16 06:03:11 · 840 阅读 · 1 评论 -
分析内核问题的工具
1.objdumpobjdump -D -l vmlinux > xxx.txtobjdump --help 看常用的参数[-D disassemble ]2.gdbgdb tool 并不是只对 应用程序的gdb vmlinux ---gdb c *(address) 可以看到具体的函数和文件名gdb disassemble (function name原创 2015-05-24 21:07:37 · 1176 阅读 · 1 评论 -
gdb 的使用
一、列文件清单list / l列出产生执行文件的源代码的一部分[cpp] view plaincopy//列出 line1 到 line2 行之间的源代码 (gdb) list line1, line2 //输出从上次调用list命令开始往后的10行程序代码 (gdb) list //输出第 n 行附近的10行程序代码 (gdb) li转载 2015-06-07 08:24:12 · 559 阅读 · 0 评论 -
[转]比较全面的gdb调试命令
http://blog.youkuaiyun.com/dadalan/archive/2009/01/12/3758025.aspx 用GDB调试程序 GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就转载 2015-06-07 08:27:57 · 648 阅读 · 0 评论 -
linux ftrace追踪一(基本技术结构粗略剖析)
一 文档说明本文为2.6.32下trace机制(以下简称trace)的调研文档。trace实现的基础为tracepoint机制,存放数据的缓存实现为ring buffer。阅读代码路径:samples/tracepointskernel/traceinclude/trace二 tracepointtracepoint是实现ftrace架构的基础。在内核代码路径s转载 2014-02-17 09:04:06 · 2114 阅读 · 0 评论 -
怎样自动运行ftrace
怎样通过uboot把trace event等设置到kernel,并自动运行?参数的设定一般是通过 early_param/ __setup这两种方法:early_param("lapic", parse_lapic);__setup("ftrace_notrace=", set_ftrace_notrace);在内核代码中搜索 early_param/ __setup并在结果中原创 2014-02-14 18:04:34 · 1053 阅读 · 0 评论 -
ftrace 简介
Trace 对于软件的维护和性能分析至关重要,ftrace 是当前 Linux 内核中一种新的 trace 工具。本文介绍 ftrace 的使用和实现原理,并将 ftrace 和 systemTap,LTTng 等软件进行对比,希望读者能够对 ftrace 有一个全面的了解。ftrace 简介ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障转载 2014-02-14 16:24:13 · 944 阅读 · 0 评论 -
__builtin_return_address(LEVEL)
看Linux内核代码过程中,看到一个有意思的:mm/vmalloc.c中struct vm_struct *get_vm_area(unsigned long size, unsigned long flags){return __get_vm_area_node(size, flags, VMALLOC_START, VMALLOC_END, -1, GFP_KERN转载 2013-12-26 10:56:06 · 1207 阅读 · 0 评论 -
有关BUG_ON()的实现
看到一个crash dump[17293.834304:1] kernel BUG at mm/slab.c:3072![17293.834311:1] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM[17293.834319:1] Modules linked in: memalloc hx280enc hx170dec mali原创 2014-01-05 10:51:38 · 1970 阅读 · 0 评论 -
kernel学习之ftrace环境搭设及使用(包括buildroot的使用)
Updated(2012/04/23): 刚看了elc2012的一篇关于使用ftrace调试性能问题的文章,也很不错https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_kobayashi.pdf同时, 推荐下面这篇关于在ARM体系结构下使用Ftrace的文章http://elinux.org/Ftrace转载 2013-09-30 15:53:12 · 1552 阅读 · 0 评论 -
how to use ftrace
How to configure ftrace into kernel?1. Debug Filesystem2. tracers: kernel function tracer kernel function Graph tracertracing mini-HOWTO:# mount -t debugfs nodev /sys/kernel/d原创 2013-09-13 11:26:23 · 1851 阅读 · 3 评论 -
浅谈linux的死锁检测
死锁:就是多个进程(≥2)因为争夺资源而相互等待的一种现象,若无外力推动,将无法继续运行下去。注意,只有在多进程或者多线程之间或者他们与中断之间相互通讯或者共享资源才有可能发生死锁,单线程或者进程之间没有联系的话,一般不会发生死锁。锁的种类比较多,这里主要说自旋锁和信号量。两者的差别就在于前者获得不到资源时的动作是不断的资源(即忙转浪费cpu的cycles)而后者则表现为睡眠等待。死锁的基转载 2013-09-10 14:00:14 · 1439 阅读 · 5 评论 -
crash dis command
crash> help disNAME dis - disassembleSYNOPSIS dis [-rludx][-b [num]] [address | symbol | (expression)] [count]DESCRIPTION This command disassembles source code instructions starti原创 2013-08-18 14:20:57 · 2033 阅读 · 0 评论 -
how to analysis the crash dump
crash> dis sysrq_handle_crash0xc01dd968 : mov r12, sp0xc01dd96c : push {r11, r12, lr, pc}0xc01dd970 : sub r11, r12, #40xc01dd974 : ldr r3, [pc, #44] ; 0xc01dd9原创 2013-08-14 20:25:30 · 1760 阅读 · 0 评论 -
crash ps command
/**************************************************************************/crash> help psNAME ps - display process status informationSYNOPSIS ps [-k|-u|-G][-s][-p|-c|-t|-l|-a|-g|-r] [pi原创 2013-08-14 20:23:14 · 2375 阅读 · 3 评论 -
How to store and analyze Kernel Crash Dumps
Howto store and analyze Kernel Crash Dumps1Configuring and Analyzing Kernel Crash DumpsDidyou ever want to investigate that kernel crash on your target board but had not any log? You had to re原创 2013-07-27 17:52:26 · 2110 阅读 · 2 评论 -
Sysrq
Linux Magic System Request Key HacksDocumentation for sysrq.c* What is the magic SysRq key?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~It is a 'magical' key combo you can hit which the kernel will respo转载 2013-07-24 16:19:12 · 1485 阅读 · 0 评论 -
CRASH工具介绍
转自:http://yalung929.blog.163.com/blog/static/2038982252013216102949487/学习 crash命令和其他命令的结合使用方法。crash是和kdump工具配套使用,用于解析kdump生成的vmcore文件。vmcore是内核的映像(实际上是整个内存的映像,一般来说我们会开启过滤功能,只记录内核页)。内核全部的数据结构转载 2013-07-10 19:29:48 · 9326 阅读 · 1 评论 -
kernel crash 发生后的那些事(三)
__do_kernel_fault -> die:继续分析__do_kernel_fault的die函数arch/arm/kernel/trap.c/*************************************************************************************/void die(const char *str, str原创 2013-07-08 18:07:35 · 3632 阅读 · 1 评论 -
kernel crash 发生后的那些事(二)
__do_kernel_fault主要包含两个函数show_pte and die./**************************************************************************/void show_pte(struct mm_struct *mm, unsigned long addr){ pgd_t *pgd;原创 2013-07-08 15:02:43 · 2448 阅读 · 0 评论 -
A soft watchdog of tty driver
引子:运行一个tty相关的应用程序,出现softlockup,有关软件看门狗的原理,看另一文章。有解决这个问题,有些信息是必须的:1.log 要打印出时间戳;2.判断是否死锁在某个信号量,或者说看某个进程卡在哪里不调度,ps -l可以看出没个进程的进入和退出时间,不知为什么不支持; 另外的方法,打开ftrace让它监测sched_switch 事件也是可以的。原创 2013-09-15 09:03:49 · 1486 阅读 · 0 评论 -
kernel crash 发生后的那些事(一)
本文根据 echo c > /pro/sysrq-trigger 触发的 Kernel crash 为例,分析kernel crash 处理的过程。当代码访问虚拟地址0时,会发生data abort,这是由MMU决定的,没有把virtual address 0 map 到任何有访问权限的物理地址。当发生data abort时,PC 会跳转到W(b) vector_dabt + s原创 2013-07-08 13:42:33 · 8383 阅读 · 0 评论