Oops快速定位代码行方法
Oops 是内核调式中常见的错误之一,尽管Oops出错的时候会打印出堆栈和函数调用关系,但是要定位到哪一行代码,如果仅仅从打印来看,需要不断的增加打印信息来调式,往往事倍功半,这里以举一个例子,Oops的快速定位办法:
1.首先确认,你的编译工具链中有
arm-linux-gdb
必须具备gdb调式命令,如果没有,可以到 http://www.sourceware.org/gdb/ 上,下载并编译
2.确认你的内核选项中
- Kernel Debugging
- -> Compile the kernel with debug info 该选项选中
3.编译内核保留 内核根目录下的 vmlinux 备用
4. 对于产生的Oops 日志
- [ERR][src/ipresolve.c #684]: total sendlen =102
- Unable to handle kernel NULL pointer dereference at virtual address 00000082
- pgd = c3b50000
- [00000082] *pgd=c3f3c031, *pte=00000000, *ppte=00000000
- Internal error: Oops: 1 [#1]
- Modules linked in:
- CPU: 0 Not tainted (2.6.27.18-WR3.0bg_small-dirty #658)
- PC is at iscsi_eh_cmd_timed_out+0x1c/0xd0
- LR is at scsi_times_out+0x30/0xa4
- pc : [] lr : [] psr: a0000013
- sp : c03ebe68 ip : c03ebe80 fp : c03ebe7c
- r10: c0410be8 r9 : c03f0348 r8 : c03ea000
- r7 : c01b3bc0 r6 : c03ebea8 r5 : 00000100 r4 : c0550a80
- r3 : c36e5400 r2 : 00000002 r1 : c0aa34e0 r0 : c0550a80
- Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
- Control: 0001317f Table: c3b50000 DAC: 00000017
- Process swapper (pid: 0, stack limit = 0xc03ea268)
直接使用arm-linux-gdb vmlinux
然后 使用命令跳转
- l * iscsi_eh_cmd_timed_out+0x1c
就能定位到出错的行
Oops快速定位代码行方法相关推荐
- 提高js调试效率的一个快捷键ctr+g 快速定位代码行
大家在chrome调试时,找到一个js后, 发现想要找到原来的调试的地方好麻烦,需要关键字搜索,但是关键字如果有重复就很麻烦,第一次定位后,一刷新,再找很麻烦,有时候,我明明知道代码,但是还要一行行拖 ...
- linux下编译make文件报错“/bin/bash^M: 坏的解释器,使用grep快速定位代码位置
一.linux下编译make文件报错"/bin/bash^M: 坏的解释器 参考文章:http://blog.csdn.net/liuqiyao_01/article/details/415 ...
- RestfulToolKit:根据接口,快速定位代码
工具:IDEA 插件:RestfulToolKit 快捷键: Ctrl + \ 或 Ctrl + Alt + N 原文 RestfulToolKit:根据接口,快速定位代码
- Eclipse Jee 2019-09 的快键键与搜狗输入法有冲突,中文状态下快速格式化代码的方法。
Eclipse Jee 2019-09 的快键键与搜狗输入法有冲突,英文状态下快速格式化代码的方法. Ctrl+Shift+F 当使用搜狗输入法的中文输入状态下,该快捷键就不好使了. 通过以上步骤能解 ...
- CSS——快速格式化代码的方法与步骤
快速格式化代码的方法与步骤: 第一步:打开设置,有两种方法: 方法一: 方法二: 第二步:在设置页面搜索:emmet.include; 第三步:在settings.json下面的{用户}中添加 ...
- 【转】定位oops的具体代码行
最近在学写linux驱动,按照宋宝华的<linux设备驱动开发详解>上的例子一步步来写.编译运行以后出现oops,不知道怎么调试,上网搜了一下,看到这篇文章,感觉不错转载到这里. 来自Li ...
- 快速定位代码位置的IDEA小插件
大家好,我是TJ 一个励志推荐10000款开源项目与工具的程序员 古语有云,工欲善其事,必先利其器,我们编码的时候也是一样的,TJ君不止一次的提到过,一个好的编码工具能让我们的编码效率事半功倍,也正因 ...
- VC,Windbg,gdb执行到指定代码行方法
在调试的时候,当执行到一段代码时,为了调试或者其他目的需要,有时候需要对一些或者几行代码多次执行或者跳过几行代码的执行,这是很有用的,比如下面的一个循环: for(int i=0;i<num;i ...
- 使用grep命令快速定位代码位置
有时候临时修改代码时,我们不需要或者没有条件使用复杂的代码编辑器.此时使用普通的文本编辑器如nano或vim,加上grep命令即可快速定位并修改代码. 例如,在kernel目录下搜索 CONFIG_B ...
最新文章
- NLP重要模型详解,换个方式学(内附资源)
- 内推|底层翻身的机会来了,快来看一看!
- mysql if begin end_MySQL存储过程例子,不能在if else里面用begin end否则会报错Erro_MySQL...
- 11月碎碎念-谈职场礼貌
- 牛客题霸 [矩阵元素查找] C++题解/答案
- 【DP】Mobile Service(jzoj 1327)
- C++ 11 深度学习(九)C++文件IO
- 晋中计算机专业对口大学,山西晋中计算机专业好就业吗?,计算机专业
- CSDN如何找到自己关注的博客专栏
- 【Computer Organization笔记05】运算器基本功能,定点运算器,Am2901的组成与功能,VHDL硬件描述语言
- 2010年IT行业十大收购
- centos7 如何安装部署k8s_如何在CentOS 7上正确安装Chromium
- 什么是磁力链接如何愉快的使用磁力链接
- signature=daa3bbe3ad9a7c162ba9d98f8d9e7530,来用百度密语吧!!!
- 基于微信小程序的医疗监督反馈小程序的设计与实现-计算机毕业设计源码+LW文档
- 计算机如何寻址,计算机运算之直接寻址法与间接寻址法
- bootloader recovery
- 前端接收java后端返回base64二进制流下载mp4
- Turing Tape (推公式 模拟)
- 修改植物大战僵尸阳关代码
热门文章
- MongoDB学习:关闭mongod方式
- jQuery数组处理汇总
- 获取客户端上次请求的URL
- 抓取Web网页数据分析
- wpbakery Visual Composer - web网页可视化 编辑器 介紹
- 【机器学习】概率神经网络(PNN)的python实现
- 客户服务器网络系统的优缺点,浅析网络存储方案的三种类型及其优缺点
- linux bash 删除所有空格,删除字符串中的所有的空白并用空格分割单词.md
- 前端怎么携带cookie发送php,PHP如何执行传递cookie的http请求并将结果保存到字符串...
- 自动轮播图html代码适应手机,JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)...