0xe7f001f0!?NDK调试过程,无故抛出SIGSEGV。

arm调试过程,如果抛一个SIGSEGV,地址在 0xe7f001f0 附近,原因居然是因为我在调试。当我使用n指令跳到下一行代码时,往往变成了continue指令一样地执行。还不确定地抛出SIGSEGV(addr:0xe7f00XXX),使用程序直接崩溃不能继续调试下去。查看寄存器发现的确有某个rN的寄存器被诡异地修改了。多次归纳后发现,都在调用虚函数时抛出SIGSEGV(addr:0xe7f00XXX),不论何处何种逻辑下,这个被神修改的寄存器的值都是0xe7f00XXX,在反编译逻辑中是要在这里取出虚函数表的虚函数指针。这个寄存器原本是从对象中读取出虚函数表地址,然后偏移取出虚函数指针,却无端被写0xe7f001f0。最后google这个地址,才发现,这是arm下调试中断,.inst 0xe7f001f0。

参考https://github.com/scottt/debugbreak。

Behavior on Different Architectures

Architecture debug_break()
x86/x86-64 int3
ARM mode, 32-bit .inst 0xe7f001f0
Thumb mode, 32-bit .inst 0xde01
AArch64, ARMv8 .inst 0xd4200000
MSVC compiler __debugbreak
Otherwise raise(SIGTRAP)

不得不喷google的android studio,lldb做得如此强差人意。它的lldb强差人意的地方还多着。

时间: 2024-11-02 04:13:07

0xe7f001f0!?NDK调试过程,无故抛出SIGSEGV。的相关文章

异常CLRDBG_NOTIFICATION_EXCEPTION_CODE( 0x04242420)的抛出过程

新建一个c#控制工程,就用自动生成的代码,不用补任何代码,如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { } } } 工程配置如下 编译,在windbg里加载运行 当调试器中断时,在事件过滤器里添加异常0

Flex builder经常会抛出:进程已终止,没有建立到调试器的连接。error while loading initial content的解决方法

不争气的adobe啊,在经过乔帮主与HTML5的打压,导致了现在好多的AS3程序员都转行了.虽然想抓住移动时代,但是却在性能上不敢恭维.虽然如此但是也促使了,好多AS3开发者拓展自己,甚至通过使用工具把AS3项目转化为html5项目.确实在国内有几家做的比较好的公司:layabox,Egret.仿佛给flash页游开发带来了新生.... 今天在看以前的东西时出现了一个问题,程序在运行的时候总是会抛出错误,错误如下: 进程已终止,没有建立到调试器的连接. error while loading i

CAD调试时抛出“正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码”异常的解决方法

这些天重装了电脑Win10系统,安装了CAD2012和VS2012,准备进行软件开发.在调试程序的时候,CAD没有进入界面就抛出 “正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码” 查看网上相关文章说是要关掉 异常--Managed Debugging Assistants,但是仍然不可以使用. 前段时间有过将软件数据库放到C盘,变成数据库只读无法写入数据的经历.是不是CAD也只读了,无法写入调试Dll呢? 随后将CAD装到了D盘,果真问题解

迭代器使用过程中为什么抛出ConcurrentModificationException

出现的场景:在迭代器对集合进行遍历的同时,集合本身进行变更操作(add(), remove(), set()). 当正常调用时: import java.util.ArrayList; import java.util.Iterator; public class TestDemo { public static void main(String[] args) { ArrayList<Integer> a = new ArrayList<>(); a.add(1); a.add(

使用CLOB抛出数字或值错误异常

今天在调试某个问题的时候,由于使用了很多循环,我需要都打印出来,试图使用clob整体处理之后再打印. 最后抛出此异常:数字或值错误. 网友解释如下: $ oerr ora 650206502, 00000, "PL/SQL: numeric or value error%s"// *Cause: An arithmetic, numeric, string, conversion, or constraint error// occurred. For example, this er

抛出了无数的Exception,但是Exception到底是啥?解开Exception的神秘面纱...

java异常 什么是异常呢? 定义:当一个程序在运行过程中,出现了一些非正常执行流程的指令,那么就会产生一个事件对象,这个事件对象在java就简称为异常(Exception). An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the program's instructions. 异常Handler: 当一个异常出现了,那么jvm就

Windows下fabric sdk连接Linux上fabric网络的调试过程

上个月刚入职一家公司从事区块链研发工作,选型采用Hyperledger Fabric作为开发平台.团队的小组成员全部采用的是在VirtualBox上面安装桌面版的Ubuntu 16.04虚拟机,开发工具JetBrains GoLand也就直接在桌面版的虚拟机里面安装.而我因为之前比较习惯使用Vagrant + VirtualBox的方式快速加载我定制版的Ubuntu镜像从而创建Linux开发环境,这样一来的弊端就是我只能通过命令行来进行一切操作而没有桌面可操作,所以我的整个开发IDE就在本机的w

druid抛出的异常------javax.management.InstanceAlreadyExistsException引发的一系列探索

最近项目中有个定时任务的需求,定时检查mysql数据与etcd数据的一致性,具体实现细节就不说了,今天要说的就是实现过程中遇到了druid抛出的异常,以及解决的过程 异常 异常详细信息 五月 05, 2017 4:16:00 下午 com.alibaba.druid.proxy.DruidDriver warn 警告: register druid-driver mbean error javax.management.InstanceAlreadyExistsException: com.al

nodejs出现events.js:72中抛出错误

作为初学者,我在使用nodejs的过程中遇到了如下的运行错误: events.js:72 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE at errnoException (net.js:901:11) at Server._listen2 (net.js:1039:14) at listen (net.js:1061:10) at Server.listen (net.js:1127:5) at Object.<