gdb 定位 oops call trace
[ 1.454380] BUG: unable to handle kernel NULL pointer dereference at 00000000000005d0
[ 1.474020] IP: [<ffffffff8144375b>] DSFW_rx_handle+0x1bb/0x370
[ 1.487902] PGD 139c25067 PUD 135301067 PMD 0
[ 1.497467] Oops: 0000 [#1] SMP
[ 1.503342] Modules linked in:
[ 1.508646] CPU: 0 PID: 3 Comm: ksoftirqd/0 Not tainted 3.10.52-waf #133
[ 1.524811] Hardware name: To be filled by O.E.M. To be filled by O.E.M./To be filled by O.E.M., BIOS 4.6.4 01/06/2012
[ 1.552962] task: ffff88013b0c0ba0 ti: ffff88013b0d4000 task.ti: ffff88013b0d4000
[ 1.571471] RIP: 0010:[<ffffffff8144375b>] [<ffffffff8144375b>] DSFW_rx_handle+0x1bb/0x370
[ 1.592629] RSP: 0018:ffff88013b0d5c98 EFLAGS: 00010202
[ 1.604640] RAX: 00000000fffffffe RBX: ffff8801353c4d00 RCX: 00000000001978fd
[ 1.622107] RDX: 0000000000000043 RSI: ffff88012bb00180 RDI: 00000000000005a8
[ 1.639575] RBP: 00000000000005a8 R08: 0000000000016d20 R09: 0000000000000000
[ 1.657043] R10: 0000000000000000 R11: ffff88011d1e2e2a R12: 0000000000000001
[ 1.674511] R13: 0000000000020063 R14: ffff8801378ea3d0 R15: 000000000000003e
[ 1.691981] FS: 0000000000000000(0000) GS:ffff88013fa00000(0000) knlGS:0000000000000000
[ 1.712308] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1.725618] CR2: 00000000000005d0 CR3: 00000001353c6000 CR4: 00000000000407b0
[ 1.743085] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 1.760553] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[ 1.778019] Stack:
[ 1.780151] ffff8801378ea3e0 ffffc90001cc3988 ffff8801353c4d00 ffffffff812b87f6
[ 1.798609] ffff88013b008900 ffff880137e87d00 ffff880137edc680 ffff88013b0d5d64
[ 1.817064] ffffc90001cc39b0 0001397200000100 ffff880137edc000 ffffffff814435a0
[ 1.835520] Call Trace:
[ 1.838954] [<ffffffff812b87f6>] ? e1000e_clean_rx_irq_nff+0x256/0xbc0
[ 1.854861] [<ffffffff814435a0>] ? DSFW_fif_recv+0x70/0x70
[ 1.867650] [<ffffffff812b91ce>] ? e1000e_poll+0x6e/0x1c0
[ 1.880179] [<ffffffff81389a68>] ? net_rx_action+0x88/0x170
[ 1.893228] [<ffffffff81037f46>] ? __do_softirq+0xd6/0x290
[ 1.906015] [<ffffffff81038129>] ? run_ksoftirqd+0x29/0x40
[ 1.918806] [<ffffffff810591d3>] ? smpboot_thread_fn+0x103/0x190
[ 1.933156] [<ffffffff810590d0>] ? lg_global_unlock+0x60/0x60
[ 1.946723] [<ffffffff81052088>] ? kthread+0xb8/0xc0
[ 1.957954] [<ffffffff81051fd0>] ? __kthread_parkme+0x80/0x80
[ 1.971522] [<ffffffff814e121c>] ? ret_from_fork+0x7c/0xb0
[ 1.984311] [<ffffffff81051fd0>] ? __kthread_parkme+0x80/0x80
[ 1.997877] Code: 00 48 98 48 c1 e0 06 01 90 f0 98 9d 81 83 80 f4 98 9d 81 01 48 85 ed 75 0f eb 4d 0f 1f 44 00 00 48 85 db 74 43 48 89 dd 48 89 ef <48> 8b 5d 28 e8 6c fd ff ff 85 c0 74 e8 8b 85 d4 00 00 00 83 f8
[ 2.053478] RIP [<ffffffff8144375b>] DSFW_rx_handle+0x1bb/0x370
[ 2.067594] RSP <ffff88013b0d5c98>
[ 2.074145] CR2: 00000000000005d0
例如
[ 2.053478] RIP [<ffffffff8144375b>] DSFW_rx_handle+0x1bb/0x370
ffffffff8144375b 是指令在内存中的虚拟地址
DSFW_rx_handle 是函数(symbol 名)
0x1bb/0x370 ,0x370 是这个函数编译成机器码后的长度,0x1bb是ffffffff8144375b这条指令在相对于
DSFW_rx_handle 函数入口的偏移
gdb定位
# gdb vmlinux
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /home/wesley/dvlp/WAF/trunk/build/linux-3.10.52/vmlinux...done.
(gdb) l *DSFW_rx_handle+0x1bb/0x370
gdb 定位 oops call trace的更多相关文章
- 【Z】段错误Segment Fault定位,即core dump文件与gdb定位
使用C++开发系统有时会出现段错误,即Segment Fault.此类错误程序直接崩溃,通常没有任何有用信息输出,很难定位bug,因而无从解决问题.今天我们介绍core dump文件,并使用gdb进行 ...
- linux设备驱动程序第四部分:从如何定位oops对代码的调试方法,驱动线
在一个我们谈到了如何编写一个简单的字符设备驱动程序,我们不是神,编写肯定会失败的代码,在这个过程中,我们需要继续写代码调试.在普通c应用.我们经常使用printf输出信息.或者使用gdb要调试程序,然 ...
- linux设备驱动第四篇:从如何定位oops的代码行谈驱动调试方法
上一篇我们大概聊了如何写一个简单的字符设备驱动,我们不是神,写代码肯定会出现问题,我们需要在编写代码的过程中不断调试.在普通的c应用程序中,我们经常使用printf来输出信息,或者使用gdb来调试程序 ...
- oops call trace 解析
Call Trace: [ 221.634988] [<ffffffff8103fbc7>] ? kmld_pte_lookup+0x17/0x60 [ 221.635016] [ ...
- 驱动: oops
linux驱动调试--段错误之oops信息分析 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29401328&id= ...
- Understanding a Kernel Oops!
Understanding a kernel panic and doing the forensics to trace the bug is considered a hacker's job. ...
- [fw]Understanding a Kernel Oops!
An “Oops” is what the kernel throws at us when it finds something faulty, or an exception, in the ke ...
- 使用gdb调试Python进程
使用gdb调试Python进程 有时我们会想调试一个正在运行的Python进程,或者一个Python进程的coredump.例如现在遇到一个mod_wsgi的进程僵死了,不接受请求,想看看究竟是运行到 ...
- Oracle 11g R2性能优化 SQL TRACE
作为Oracle官方自带的一种基本性能诊断工具,SQL Trace可以用来评估当前正在运行的SQL语句的效率,同时为该语句生成统计信息等,并保存这些信息到指定路径下的跟踪文件(trace)当中.SQL ...
随机推荐
- DBHelper (支持事务与数据库变更)
1 概述 更新内容:添加 "支持数据分页" 这个数据库操作类的主要特色有 1> 事务操作更加的方便 2> 变更数据库更加的容易 3> 支持数据分 ...
- Node.js Web 开发框架大全《路由篇》
这篇文章与大家分享优秀的 Node.js 路由(Routers)模块.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...
- 制作具有SSH、MySQL功能的Chroot
由于工作需求,需要在Linux上建立SSH.MySQL两个用户. 使这两个账户连接到跳板机后仅能执行有限的命令(SSH用户只能执行SSH命令,MySQL用户只能执行MySQL命令). MySQL账户C ...
- iOS 三方库fmdb 的使用
使用fmdb 做本地数据的存储非常方便, 1. github 上搜索fmdb 下载压缩包 导入到工程中 (如果你的mac 有cocoapod 也可以直接通过cocoapod 添加) 2. 以下代码是通 ...
- Hbase Java API详解
HBase是Hadoop的数据库,能够对大数据提供随机.实时读写访问.他是开源的,分布式的,多版本的,面向列的,存储模型. 在讲解的时候我首先给大家讲解一下HBase的整体结构,如下图: HBase ...
- JavaScript学习03 JS函数
JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的 ...
- 转 java中static{}语句块详解
原文地址:http://blog.csdn.net/lubiaopan/article/details/4802430 感谢原作者! static{}(即static块),会在类被加载的时候执 ...
- List集合概述
上篇总结了Set集合,这回总结下List集合....先来框架图: 一.List集合 List集合代表一个元素有序,可重复的集合,集合中每个元素都有对应的顺序索引.List接口中增加了一些根据索引操作元 ...
- iOS创建、删除文件夹、获取沙盒路径
1.获取沙盒路径 // 获取沙盒路径 NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent: ...
- iOS关于启动页自定义特殊处理
平常开发中对于启动页可能会有一些特别的要求,比如在启动页加动画或加一些按键可以响应事件等,最近项目中要在启动页增加版本号,因为版本号是不断的改变,所以要动态实现把它加到启动页上:在XCode上面配置的 ...