
内核调试
文章平均质量分 79
leo*liu
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
regulator小风波---谁下了我的电
问题背景:第一版已经完成的情况,内核合入了一个drm的大patch,合入后,第一版的hdf出现亮屏后突然黑屏问题,且按power无法亮屏。问题必现 定位过程:通过几次复现,发现出现问题的时候会有这样的打印,几乎同时间,好的版本中没有红色部分打印[ 33.765684]vcc3v3_lcd0_n: disabling[ 33.765723] vcc3v3_lcd1_n: disabling[ 33.765772] pcie30_3v3: disabling此时示波器...原创 2022-03-31 00:30:03 · 2766 阅读 · 7 评论 -
dev下无法生成节点的分析思路和解决方法及原理
前言:本篇没有解决什么大问题,不神秘也不高深莫测,单纯记录,同时为其他碰到该问题的同仁提供思路,重点在于分析思路的整理,并使用流水帐的形式,试图讲清/dev下节点的生成原理1,背景为了调试方便,将之前直接编译进内核的驱动调整为module模式加载,即将驱动编译为.ko文件,通过insmod动态加载驱动。在未调整为module加载方式之前,系统启动后可以正常在dev下正常生成驱动节点 driver_test0,driver_test1将驱动编译为module后,在系统完全启动后,使用insmod 加载原创 2021-01-15 18:15:27 · 4137 阅读 · 1 评论 -
打印的优先级以及动态打印
这里有两个方向的打印概念: 1,控制台的打印级别 2,printk的默认打印级别1.控制台的打印级别: 启动后使用这个命令: cat /proc/sys/kernel/printk, 可以看到:8 4 1 7 //数字越小代表级别越高 上述数字分别为: 8 :控制台的日志打印级别,即如果使用带打印级别的printk的打印级别 > 控制台的级别,才可以输出该打印,也就是说,它控制这内核启动时候...原创 2018-02-16 00:00:04 · 1612 阅读 · 0 评论 -
pr_debug和pr_dbg
(这节的前提是已经使能了printk)pr_debug和pr_dbg和其他的pr_xx的使用方法是不一样的。 其他诸如pr_info等更加高级别的pr_xx api只需要使能动态打印,同时使控制台的打印级别小于需要执行的pr_xx api即可 但是pr_debug不可以这样子,使能它需要更多的步骤 这是因为pr_debug的定义和其他pr_xx是不一样的#if defined...原创 2018-02-18 22:22:55 · 1871 阅读 · 0 评论 -
使用qemu搭建linux内核开发环境详细教程
目录一.安装交叉编译链(根据自己的需求去安装编译链,我这里安装的是32位)step1:下载编译链,执行命令:step2:解压源码step3:添加环境变量,使你的编译链全局可用step4:保存退出后使该变量生效:二,安装qemustep1:step2:step3:step4:step5:step6:三.下载内核step1:下载内...原创 2019-03-11 19:29:52 · 21080 阅读 · 13 评论 -
一次奇怪的bug---对sysrq-trigger的虚拟化
背景:我们的系统做了虚拟化处理,系统存在多个init,每个init负责一个业务分支问题的产生:在某次操作的时候,上层应用中的一个进程会调用KillAllProcesses()接口,向节点/proc/sysrq-trigger写i,目的是kill掉当前系统中除了init进程外的其他子进程。static void KillAllProcesses() { android::base::Wri...原创 2019-03-26 11:51:11 · 529 阅读 · 2 评论 -
借助qemu使用gdb去跟踪和学习内核
这是一篇《使用qemu搭建linux内核开发环境详细教程》的续篇。需要合起来看 之前总结了一篇使用qemu搭建内核实验环境的文章,既然环境搭建起来了,那么就要用起来。跟踪内核代码,去实时看内核的走向,一直是一个不怎么容易的操作,要么缺乏硬件资源,要么缺乏软件环境,这里给出一种选择,使用qemu+gdb的方式,不依赖硬件,在我们自己的电脑上就可以完成这个过程。这里记录一下这...原创 2019-05-07 17:54:14 · 1948 阅读 · 0 评论 -
pr_xx打印级别的定义
标签(空格分隔): kernel的打印#define pr_warn pr_warning#define pr_notice(fmt, ...) \ printk(KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__)#define pr_info(fmt, ...) \ printk(KERN_INFO pr_fmt(fmt), ##__V...原创 2018-02-18 22:23:30 · 5702 阅读 · 0 评论 -
内核调试手段
http://www.360doc.com/content/14/0208/18/10366845_350789152.shtml内核调试手段大全 https://my.oschina.net/fgq611/blog/113249 https://linux.cn/article-3682-1.html 非常好的介绍http://linuxperf.com/?cat=4 各种分析案例http://...转载 2018-02-15 23:58:31 · 354 阅读 · 0 评论 -
使用断言
使用断言标签(空格分隔): 内核调试BUG_ON(condition) BUG()原创 2018-02-16 23:12:39 · 214 阅读 · 0 评论 -
死机debug北桥挂死
死机debug北桥挂死标签(空格分隔): 内核调试北橋挂死, 一般是CPU訪問了無效地址, 但這個無效地址並非是地址不对齐, 更多是沒有映射到RAM上而已...原创 2018-02-16 22:45:01 · 206 阅读 · 0 评论 -
内核调试
调试死锁问题标签(空格分隔):内核调试死锁:a进程等到b释放锁,b等待b释放锁,这样互相等待,导致程序的运行逻辑出现问题,都是wait状态。 死锁并不消耗cpu,反而减轻cpu负载,因为都是等待状态,但是程序的执行效果就有问题了。...原创 2018-02-16 22:44:23 · 201 阅读 · 0 评论 -
内核调试死机排查
内核调试死机排查标签(空格分隔): 内核调试http://blog.youkuaiyun.com/kangear/article/details/8217329 一版出现Unable to handle kernel NULL pointer dereference at virtual address 0xxxxxxx多是空指针或是缓冲区溢出产生 /zhsa022/usrhome/leo.l...原创 2018-02-16 23:09:57 · 2820 阅读 · 0 评论 -
使用反汇编check死机问题
使用反汇编check死机问题标签(空格分隔): 内核调试sde-objdump -d 在系统挂死时,最好的方式是在挂死得到他们的堆栈信息或者是核内寄存器EPC(arm / mips)的信息 然后通过反汇编sde-objdump -d得到内存分布然后查找挂死时的内存地址或者oops信息就可以定位哪一行出错[00]Indx [01]Rand [02]Elo0 [03]Elo1...原创 2018-02-16 23:10:20 · 642 阅读 · 0 评论 -
strace
strace标签(空格分隔): 内核调试用来跟踪系统调用: 解压: 1./configure生成Makefile 2/zhsa122/usrhome/leo.liu/workspace/tool/strace-4.20 编译方式: ./configure –host=arm-linux CC=/zhsa122/usrhome/leo.liu/workspace/3759-7....转载 2018-02-16 22:43:27 · 163 阅读 · 0 评论 -
内存泄漏
内存泄漏标签(空格分隔): 内核调试用户空间https://www.ibm.com/developerworks/cn/linux/l-cn-valgrind/ 应用 Valgrind 发现 Linux 程序的内存问题内核空间kmemcheck kmemleak...转载 2018-02-16 22:42:39 · 175 阅读 · 0 评论 -
sysrq的使用
sysrq的使用标签(空格分隔): 内核调试 打开这个功能,运行: #echo 1 > /proc/sys/kernel/sysrq 关闭这个功能: # echo 0 > /proc/sys/kernel/sysrq 只有打开sysrq这个功能后,才可以echo > /proc/sysrq-trigger 否则是写不进去的...原创 2018-02-16 22:42:04 · 1185 阅读 · 0 评论 -
内核栈溢出的保护
内核栈溢出的保护标签(空格分隔): 内核调试http://blog.youkuaiyun.com/u014089131/article/details/70908499 内核栈溢出保护 http://www.lxway.com/250826601.htm检测内核的堆栈溢出 使用dump_stack() 查看堆栈...转载 2018-02-16 22:41:28 · 335 阅读 · 0 评论 -
ftrace
ftrace标签(空格分隔): 内核调试在此输入正文https://www.ibm.com/developerworks/cn/linux/l-cn-ftrace3/index.html转载 2018-02-16 22:40:49 · 177 阅读 · 0 评论 -
内存转储
内存转储标签(空格分隔): 内核调试https://www.ibm.com/developerworks/cn/linux/l-cn-dumpanalyse/index.html crash的使用转载 2018-02-16 23:12:21 · 1390 阅读 · 0 评论 -
dump_stack查看调用关系
dump_stack查看调用关系标签(空格分隔): 内核调试使用dump_stack()这个函数可以打印出函数的上下文调用关系 头文件: #include <linux/kprobes.h> #include <asm/traps.h> 然后在哪里加上这句,在模块加载以后执行dmesg就可以在串口打印出调用关系CPU: 0 PID: 1 Comm...原创 2018-02-16 22:48:24 · 1570 阅读 · 0 评论