首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何快速定位 Linux Panic 出错的代码

问题描述 内核调试中最常见的一个问题是:内核Panic后,如何快速定位到出错的代码? 就是这样一个常见的问题,面试过的大部分同学都未能很好地回答,这里希望能够做很彻底地解答。...那么有了地址以后,就可以定位到该地址落在哪个函数的区间内,然后找到该函数,进而通过计算偏移,定位到代码。...先通过函数名定位到所在函数,然后通过偏移定位到代码。 相应的工具有addr2line, gdb, objdump等,这几个工具在How to read a Linux kernel panic?...addr2line 如果出错的内核跟当前需要调试的内核一致,而且编译器等都一致,那么可以通过addr2line直接获取到出错的代码,假设出错地址为0019594c: $ addr2line -e vmlinux_with_debug_info

48540
您找到你想要的搜索结果了吗?
是的
没有找到

vi中跳到文件的第一和最后一

由于vi编辑器不能使用鼠标,所以一个大文件如果要到最后一只用键盘下键的话会是一个很痛苦的过程,还好有各种比较快捷的方法归我们使用: 1. vi 编辑器中跳到文件的第一:    a 输入 :0 或者...:1 回车    b 键盘按下 小写 gg 2.vi 编辑器跳到文件最后一:    a 输入 :$ 回车    b 键盘按下大写 G    c 键盘按 shift + g (其实和第二种方法一样...) Vim快速移动光标至行首和行尾 1、 需要按快速移动光标时,可以使用键盘上的编辑键Home,快速将光标移动至当前行的首。...2、 如果要快速移动光标至当前行的行尾,可以使用编辑键End。也可以在命令模式中使用快捷键””(Shift+4)。与快捷键”^”和0不同,快捷键””前可以加上数字表示移动的行数。...例如使用”1”表示当前行的行尾,”2”表示当前行的下一的行尾。

9.2K40

快速学习Linux-Linux历史

Linux内核: https://www.kernel.org/ 发行版:基于linus维护的linux内核,是由一些厂商集成了漂亮易用的桌面和常用的软件而发布的商品。...Redhat应该说是在国内使用人群最多 的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。...Ubuntu 国内乃至全球热门的Linux发行版。也是各种推荐入门Linux爱好者安装的一个Linux发行版。...的open版本,来自德国的发行版,它基本有如下特点: 1.基于的是企业级的SUSE Linux再加上德国制造,所以非常稳定 2.华丽的KDE桌面,业界称为“最华丽的Linux发行版" 3.安装镜像提供多个桌面环境...Linux的应用领域 网站服务器信息查询: www.netcraft.com 1.基于Linux的企业服务器 2.嵌入式应用 Linux与Windows的区别 1.Linux严格区分大小写 2.Linux

1.7K10

第一代码》读书笔记1

Android系统架构Android大致可以分为四层架构:Linux内核层、系统运行库层、应用框架层、应用层。1....Linux内核层Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理。2....选择运行设备图片分析第一个Android项目1. 项目结构的分析图片4. .gradle和.idea都是自动生成的一些文件,无需关心,也不需要编辑。...10. gradlew和gradlew.bat:用来是命令行界面执行gradle命令,其中gradlew是在linux或mac系统中使用的,gradlew.bat是在windows系统中使用的。...回到活动重写onCreateOptionsMenu()方法 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater

30840

python 三代码实现快速排序

python 三代码实现快速排序 最近在看 python cookbook , 里面的例子很精彩,这里就帮过来,做个备忘录 主要利用了行数的递归调用和Python的切片特性,解释一下每行代码的含义...: 第1: #coding:utf-8 指定utf-8 编码 第2:定义函数名和参数 第3: 判断列表长度是否小于等于1, 如果小于等于1,直接返回列表 第4:返回递归函数拼接的列表,[lt...[0]] 列表推导表达式,返回一个比 L[0] 小的列表,[ge for ge in L[1:] if ge >= L[0]], 返回一个比L[0] 大的列表, 再加上L[0] 就构成完整的列表 第四是最关键的...,返回三个部分: 比列表第一个元素小的所有元素列表递归调用 第一个元素 比列表第一个元素大的所有元素列表递归调用 递归调用部分,处理过程都是一样的,用列表第一个参数作为中间值,把列表分为两部分 最后两是测试代码

43320
领券