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 ...
最新文章
- 面对大规模AI集成,企业为何迟迟犹豫?
- js 自动关闭html页面,JS关闭窗口或JS关闭页面的几种代码分享
- 一个页面多个swiper问题解决
- 从零开始的AI·吃透kNN算法,学完我悟了(附实例代码)
- 概率分布的熵归一化(Entropy Normalization)
- win10 笔记本猎豹WiFi无法打开
- 年轻人不讲武德,居然在简历中藏木马!
- atmega8 例程:T1定时器 CTC模式 方波输出
- 计算机视觉论文-2021-05-31
- 鲲鹏凌云,并行科技Paramon通过华为云鲲鹏云服务兼容性认证
- matlab 复数求模长,matlab计算带有复数的函数,最后求复数函数的模,结果里面却有...
- 流行-Manifold【0】-维基百科中文版本解释
- 看完豁然开朗!美团java面试难吗
- mysql 一张表的数据插入另一张表的sql语句
- linux学习笔记-切换目录
- 跑分cpu_跑分完爆骁龙 865?明年这些中端处理器真的要起飞
- 掷骰子游戏设计(C++)
- 愚人节将至,怎么恶搞最过瘾
- Linux玩dota2需要什么显卡,dota2最低配置要求 玩dota2需要什么电脑配置
- HDUOJ 1069 Monkey and Banana
热门文章
- mvn compile遇到的问题:-source1.3 中不支持注释
- cisco交换机端口“假死”现象
- java遍历文件夹并复制文件到指定目录
- localForage Web 离线存储
- 矩阵奇异值分解(SVD)
- php array 插值,PHP中的关联数组的插值(双引号字符串)
- QT中文乱码的解决方法,一劳永股的解决方法,如下
- ajax 执行成功 modal 关闭_Ajax请求中的async:false/true的作用
- python函数参数定义顺序_18 Python - 函数定义与参数
- 实验室服务器安装虚拟机,如何使用VM虚拟机创建私有网络试验室