应用调试(三)oops】的更多相关文章

目录 应用调试(三)oops 引入 配置内核打开用户oops CONFIG_DEBUG_USER user_debug 设置启动参数测试 打印用户堆栈 分析栈 main的调用 title: 应用调试(三)oops date: 2019/01/19 12:06:58 toc: true --- 应用调试(三)oops 引入 在驱动程序调试中,发生段错误后内核打印出oops信息,包括pc值,寄存器值和栈信息 Unable to handle kernel paging request at virt…
目录 驱动调试(三)oops确定函数PC 什么是oops 流程简述 代码仓库 模块例子分析 找到PC值 判断是否属于模块 查看符号表 找到模块 反汇编模块 内核例子分析 找到PC值 判断是否属于模块 反汇编内核 分析汇编 title: 驱动调试(三)oops确定函数PC date: 2019/1/14 17:30:32 toc: true --- 驱动调试(三)oops确定函数PC 什么是oops oops是 Linux 内核的一部分出现了偏差行为,你有做错了什么吗?可能没有.它实际上就是"哎呀…
目录 驱动调试(四)oops确定调用树 内核开启调用树 栈指针分析 原理 寄存器别名 基础解释 例子分析 找到PC地址的位置 栈分析 附录:原文的excel title: 驱动调试(四)oops确定调用树 date: 2019/1/14 19:30:32 toc: true --- 驱动调试(四)oops确定调用树 内核开启调用树 如果内核开启调用信息的打印 # 这个需要配置内核 #│ Symbol: FRAME_POINTER [=y] │ #│ Prompt: Compile the ker…
1. Phonegap桌面开发工具 Phonegap Desktop-App与 手机客户端调试工具PhoneGap Developer App 此工具方便.快捷.自动.可以在真机中查看 无法设置断点.无法调试本地功能. 要手机和电脑在同一个wifi下才可调试. 2. Ripple Emulator 方便.快捷. 无法设置断点.无法调试本地功能. 3. weinre 比较麻烦,但是可以调试本地功能.…
XE6 & IOS开发之免证书真机调试(1):颁发属于自己的App签名证书(有图有真相) XE6 & IOS开发之免证书真机调试(2):连接真机并运行App(有图有真相) XE6 & IOS开发之免证书真机调试(3):生成iPA文件并安装到其它苹果设备上(有图有真相) XE8 & IOS开发之免费证书真机调试:开发证书.AppID.开发授权profile的申请,附Debug真机调试演示(XCode7 Beta版或以上版本适用,有图有真相)…
1.当驱动有误时,比如,访问的内存地址是非法的,便会打印一大串的oops出来 1.1以LED驱动为例 将open()函数里的ioremap()屏蔽掉,直接使用物理地址的GPIOF,如下图所示: 1.2然后编译装载26th_segmentfault并执行测试程序后,内核便打印了oops出来,如下图所示: 2.接下来,我们便来分析oops: Unable to handle kernel paging request at //无法处理内核页面请求的虚拟地址56000050 pgd = c38500…
上章链接入口: http://www.cnblogs.com/lifexy/p/8006748.html 在上章里,我们分析了oops的PC值在哪个函数出错的,那如何通过栈信息来查看出错函数的整个调用过程? 本章接着上章,来分析oops的栈信息 1.上章的oops栈信息如下图所示: 9fe0: 代表最初的栈顶SP寄存器位置 9e80:代表函数出错的SP寄存器位置 2.我们先来分析上图的栈信息,又是怎样的过程呢? 2.1内核主要是通过STMDB和LDMIA汇编命令来入栈和出栈 (STMDB和LDM…
上章链接入口: http://www.cnblogs.com/lifexy/p/8006748.html 在上章里,我们分析了oops的PC值在哪个函数出错的 本章便通过栈信息来分析函数调用过程 1.上章的oops栈信息如下图所示: 9fe0: 代表最初的栈顶SP寄存器位置 9e80:代表函数出错的SP寄存器位置 2.我们先来分析上图的栈信息,又是怎样的过程呢? 2.1内核主要是通过STMDB和LDMIA汇编命令来入栈和出栈 (STMDB和LDMIA汇编命令参考: http://www.cnbl…
1.当驱动有误时,比如,访问的内存地址是非法的,便会打印一大串的oops出来 1.1以LED驱动为例 将open()函数里的ioremap()屏蔽掉,直接使用物理地址的GPIOF,如下图所示: 1.2然后编译装载26th_segmentfault并执行测试程序后,内核便打印了oops出来,如下图所示: 2.接下来,我们便来分析oops: Unable to handle kernel paging request at //无法处理内核页面请求的虚拟地址56000050 pgd = c38500…
编写代码过程中少不了调试.在windows下面,我们有visual studio工具.在linux下面呢,实际上除了gdb工具之外,你没有别的选择.那么,怎么用gdb进行调试呢?我们可以一步一步来试试看. #include <stdio.h> int iterate(int value) { if(1 == value) return 1; return iterate(value - 1) + value; } int main() { printf("%d\n", it…
在上篇文章中,我们讲解了如何调用我们的hello-world应用,只需要使用命令: serverless invoke -f hello -l ,但是我们总不可能修改一次代码,就调用一下这个命令吧,或者说我们需要调试我们的代码的时候,总不能每次都要部署到AWS服务器端吧,那么这样的效率非常低.因此我们需要在本地调式完成后,我们最后部署到我们的AWS服务器上即可. 1. 使用 Terminal调式 我们只需要在 invoke 后加 local 就可以了,如命令:serverless invoke…
内核版本:Linux-3.14 作者:彭东林 邮箱:pengdonglin137@163.com 如果没有使用CONFIG_DYNAMIC_DEBUG,那么就需要定义DEBUG,那么此时pr_debug就退化为了printk. 如果定义了CONFIG_DYNAMIC_DEBUG,下面有几种方法: 参考内核文档:Documentation/dynamic-debug-howto.txt Introduction ============ This document describes how to…
1.在之前第36章里,我们学习了通过驱动的oops定位错误代码行 第36章的oops代码如下所示: Unable to handle kernel paging request at //无法处理内核页面请求的虚拟地址56000050 pgd = c3850000 [] *pgd= Internal error: Oops: [#] //内部错误oops Modules linked in: 26th_segmentfault //表示内部错误发生在26th_segmentfault.ko驱动模…
在<Learning From Your Bugs>一文中,我写了关于我是如何追踪我所遇到的一些最有趣的bug.最近,我回顾了我所有的194个条目(从13岁开始),看看有什么经验教训是我可以学习的.下面是我总结的最重要的经验教训,包括编码,测试和调试三个方面.编码下面这些都是我经历过的会导致难点bug的问题:1.事件顺序.在处理事件时,提出下列问题会很有成效:事件可以以不同的顺序到达吗?如果我们没有接收到此事件会怎么样?如果此事件接连发生两次会怎么样?哪怕通常不会发生,但系统(或交互系统)其他…
虽然网上已经有多的数不清的调试教程了,但仍然没有发现哪篇文章写的通俗易懂,索性自己尝试写写自己的一些使用习惯或者说是心得,希望对那些还不是很懂得使用断点调试的孩子有一些帮助(大神请无视~). 1.断点调试是啥?难不难? 断点调试其实并不是多么复杂的一件事,简单的理解无外呼就是打开浏览器,打开sources找到js文件,在行号上点一下罢了.操作起来似乎很简单,其实很多人纠结的是,是在哪里打断点?(我们先看一个断点截图,以chrome浏览器的断点为例) 步骤记住没? 用chrome浏览器打开页面 →…
这篇文章主要为大家详细介绍了PHPStorm+XDebug进行调试图文教程,内容很丰富,具有一定的参考价值,感兴趣的小伙伴们可以参考一下   笔者的开发环境如下:Windows8.1+Apache+PhpStorm+XDebug+Firefox(XDebug helper 1.4.3插件). 一.XDebug安装配置 (1)下载XDebug下载地址:http://www.xdebug.org/必须下载跟机器上安装的php匹配的版本才行.具体下载方法如下:将phpinfo网页的源代码拷贝到http…
一.环境描述 Eclipse IDE for C/C++ Developers version 4.4.0 MinGW  gcc/g++ version 4.8.1;gdb version 7.6.1 二.操作步骤 1.新建工程 2.编译源程序 3.调试设置 Run-->Debug Configurations-->Debugger,设置调试器目标 4.启动调试 三.说明 windows下Eclipse调试C程序时,会出现无法使用printf和scanf的情况:console没有输出.原因是由…
作者:桂. 时间:2017-02-28  07:06:30 链接:http://www.cnblogs.com/xingshansi/articles/6477185.html 声明:转载请注明出处,谢谢. 前言 之前经常用MATLAB,却不小心停留在了舒适区,连基本的调试方法都没有掌握.本文主要是对MATLAB程序调试中的一般方法进行总结,也是自己学习的记录.全文大致分为三个段落: 1)代码内调试: 2)断点调试方法: 3)指令调试方法: 本文主要为个人学习总结,并借鉴了前人的经验,相应链接在…
原文链接:http://www.07net01.com/2016/11/1721293.html 如何远程调试tomcat 一,linux环境下 1. 服防火墙打开8000端口,允许外网访问:2. 修改catalina.sh:搜索到如下行:JPDA_ADDRESS="localhost:8000" 改为:JPDA_ADDRESS="0.0.0.0:8000"意为:允许所有ip连接到8000端口,而不仅是本地.参考catalina.sh.debug的配置. 2. 执行…
在<Learning From Your Bugs>一文中,我写了关于我是如何追踪我所遇到的一些最有趣的bug. 最近,我回顾了我所有的194个条目,看看有什么经验教训是我可以学习的.下面是我总结的最重要的经验教训,包括编码,测试和调试三个方面. 编码 下面这些都是我经历过的会导致难点bug的问题: 1.事件顺序.在处理事件时,提出下列问题会很有成效:事件可以以不同的顺序到达吗?如果我们没有接收到此事件会怎么样?如果此事件接连发生两次会怎么样?哪怕通常不会发生,但系统(或交互系统)其他部分的b…
移动应用调试之Inspect远程调试 一.准备工作 chrome浏览器,建议最新版本 如果你点击inspect打开的DevTools窗口一片空白,且刷新无效时,那极有可能是由于被墙的缘故. 二.Inspect远程调试介绍 开发PC页面的时候使用chrome浏览器的开发者工具,可以很容易的捕获到页面的dom元素,并且可以修改样式,方便调试,但是手机上却很麻烦,因为手机上没有办法直接打开开发者工具查看元素.其实可以通过将设备连接到PC,使用PC的开发者工具检测. 三.Android的Inspect远…
一.参考链接 read chrome remote debugging documentation 调出开发者选项 二.设置android 在安卓4.2及更新的版本中,默认情况下,[开发者选项]是隐藏的.要启用[开发者选项],设置 -> 关于手机 -> 版本号,对着版本号点击7次. 设置 -> 开发者选项 -> USB调试 三.连接手机和电脑 1.用数据线,mac转接头把android和mac连接起来:2.打开android的chrome浏览器中需要调试的网页:3.打开mac的ch…
IDA+gdb配合VMware调试windows已经不是什么新鲜事了,但是之所以要发这篇帖子是因为我按照之前的帖子还有网上其他的教程设置调试环境,结果遇到了各种问题,所以仅仅是更新一下,各位轻拍. 环境:IDA6.9 + VMware12 + win10_host + win7x64_guest 一.更改VMX配置文件,开启VMware内的gdb stub (1)在你的虚拟机对应的 *.vmx文件末尾加上如下三行并保存,: debugStub.listen.guest64 = "TRUE&quo…
作者:桂. 时间:2017-02-28  07:06:30 链接:http://www.cnblogs.com/xingshansi/articles/6477185.html 声明:转载请注明出处,谢谢. 前言 之前经常用MATLAB,却不小心停留在了舒适区,连基本的调试方法都没有掌握.本文主要是对MATLAB程序调试中的一般方法进行总结,也是自己学习的记录.全文大致分为三个段落: 1)代码内调试: 2)断点调试方法: 3)指令调试方法: 本文主要为个人学习总结,并借鉴了前人的经验,相应链接在…
参考博客: https://sspai.com/post/44447 以下是实际动手操作步骤: 一 打开手机开发者模式 二 允许USB调试 三 安装  VirtualXposed_1.apk         (感觉是一个虚拟机) 四 安装  WebViewDebugHook.apk      (打开安卓webView的debug的钩子hook) 五 将软件(要调试的app)安装在VX中,将WebViewDebugHook.apk 也安装在VX中,点击 WebViewDebugHook.apk …
目录 使用 dlv 调试smartraiden 一 正常启动 smartraiden 二 dlv 调试 三 dlv attach 使用 dlv 调试smartraiden by 白振轩 使用 dlv 调试smartraiden 一 正常启动 smartraiden 二 dlv 调试 三 dlv attach goroutines -s 查看所有 goroutine 的栈 解决问题 对于程序运行过程中碰到的莫名其妙的问题,比如不明原因的阻塞,命令行 dlv 调试可能比 ide 调试效果更好 一 正…
一.GDB简介 GDB是GNU发布的一款功能强大的程序调试工具.GDB主要完成下面三个方面的功能: 启动被调试程序. 让被调试的程序在指定的位置停住. 当程序被停住时,可以检查程序状态(如变量值) 二.GDB使用流程 //1.编译生成可执行文件: gcc -g -o test hello.c gcc -g hello.c -o test //等效 //2.启动GDB gdb test //3. 在函数处设置断点 break main //4. 运行程序 run //5. 利用更加丰富的gdb命令…
MATLAB(1)——基本调试方法(Debug)           链接:http://www.cnblogs.com/xingshansi/articles/6477185.html 前言 之前经常用MATLAB,却不小心停留在了舒适区,连基本的调试方法都没有掌握.本文主要是对MATLAB程序调试中的一般方法进行总结,也是自己学习的记录.全文大致分为三个段落: 1)代码内调试: 2)断点调试方法: 3)指令调试方法: 本文主要为个人学习总结,并借鉴了前人的经验,相应链接在最后一并附上. 一.…
1.断点调试是啥?难不难? 断点调试其实并不是多么复杂的一件事,简单的理解无外呼就是打开浏览器,打开sources找到js文件,在行号上点一下罢了.操作起来似乎很简单,其实很多人纠结的是,是在哪里打断点?(我们先看一个断点截图,以chrome浏览器的断点为例) 步骤记住没? 用chrome浏览器打开页面 → 按f12打开开发者工具 → 打开Sources → 打开你要调试的js代码文件 → 在行号上单击一下,OK!恭喜你的处女断点打上了,哈哈~~ 火狐浏览器: 2.断点怎么打才合适? 打断点操作…
1.断点调试是啥?难不难? 断点调试其实并不是多么复杂的一件事,简单的理解无外呼就是打开浏览器,打开sources找到js文件,在行号上点一下罢了.操作起来似乎很简单,其实很多人纠结的是,是在哪里打断点?(我们先看一个断点截图,以chrome浏览器的断点为例) 步骤记住没? 用chrome浏览器打开页面 → 按f12打开开发者工具 → 打开Sources → 打开你要调试的js代码文件 → 在行号上单击一下,OK!恭喜你的处女断点打上了,哈哈~~ 2.断点怎么打才合适? 打断点操作很简单,核心的…