- 博客(38)
- 收藏
- 关注
原创 ART异常处理机制(3) - NullPointerException实现
在本篇介绍 NullPointerException在 ART种的实现。在 ART异常处理1 中,我们已经知道了 ART会注册信号处理函数,优先尝试处理 SIGSEGV信号。ART中总共又 4 种 handler 享有优先处理 SIGSEGV信号的权利。今天我们主要分析下 NullPointerHandler 以及 NullPointerException 的检测以及抛出。
2017-11-22 20:20:29
3280
原创 ART异常处理机制(2) - StackOverflowError 实现
在本篇介绍 StackOverflowError 在 ART种的实现。在 ART异常处理1 中,我们已经知道了 ART会注册信号处理函数,优先尝试处理 SIGSEGV信号。ART中总共又 4 种 handler 享有优先处理 SIGSEGV信号的权利。今天我们主要分析下 StackOverflowHandler以及 StackOverflowError的检测以及抛出。先看下StackOve
2017-11-22 20:01:40
4545
原创 ART异常处理机制(4) - throw & catch & finally实现
本文深入研究了 java exception的 throw,try-catch在ART中的实现。
2017-11-21 18:38:10
2858
2
原创 ART异常处理机制(1) - SIGSEGV信号的拦截和处理
主要讲述 Android ART虚拟机的异常处理,StackOverflowError的检测和抛出原理,NullPointerException的检测和抛出原理等。
2017-11-14 20:51:18
10305
原创 dumpsys meminfo 解析
1.命令执行输出sssss:/ # dumpsys meminfo com.android.home Appl...
2019-07-16 21:45:20
4509
原创 Binder学习[4]: AIDL 实现
1.从系统服务 ActivityManagerService开始我们看 AMS声明:public class ActivityManagerService extends IActivityManager.Stub implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback {可以看到AMS继承了 IAc...
2018-12-06 18:28:29
2223
2
原创 Binder学习[5]: Android ContentProvider 进程间通信原理及实现
1.Android ContentProvider 如何进行进程间通信的
2018-12-04 23:28:50
749
原创 Binder学习[3]: ServiceManger.getService 实现
本文主要从分析 Java层 getService是怎么实现的,getService最终的返回值是什么,以及怎么使用的。1.ServiceManager.getService从Am.java的 onRun函数开始: @Override public void onRun() throws Exception { mAm = ActivityManager....
2018-12-04 23:27:30
2510
原创 Android ftrace
ftrace README:××××:/sys/kernel/debug/tracing # lsREADME buffer_size_kb events options saved_cmdlines set_event trace_clock trace_options tracing_on ...
2018-12-04 15:46:52
1238
原创 Binder学习[2]: ServiceManger.addService实现
本文将讲述用户进程如何通过 defaultServiceManager()->addService的实现。1.addService发起端进程在 addService过程中的动作class DrmManagerService : public BnDrmManagerService {....class BnDrmManagerService: public BnInterfac...
2018-02-01 23:46:57
5580
4
原创 Binder学习[1]: ServiceManger 如何成为所有Service的管理进程
本文主要解析两个关键点:ServiceManger 如何成为所有Service的管理进程 ServiceManager 与 Binder Driver 共享 128K 内存我们从ServiceManager的 main函数开始(service_manager.c):int main(){ struct binder_state *bs; bs = binder_o...
2018-01-30 23:48:40
942
原创 AliOS Developer 网址
AliOS开发者网址及代码下载,有时间可以研究一下。1.AliOS 开发者主页:https://developer.alios.cn/#/index2.AliOS源码下载:https://developer.alios.cn/#/%2Fdevelop%2Fopen%2Fuserguide%2Fdownload?level=2repo init -u http://ope
2018-01-30 14:25:07
3260
原创 Android Watchdog 机制
用两张图和部分代码来描述:第一张图(图片需要在新标签中打开):第二张图借自 @宇落无痕 的博客:代码 Watchdog.run(): @Override public void run() { boolean waitedHalf = false; while (true) {
2018-01-25 22:01:53
707
原创 Handler,Looper,HandlerThread
1.Handler,Looper原理图解:其根本点在于:在 Handler所在线程通过创建一个 Looper来创建一个 MessageQueue通过在 Handler所在线程执行 Looper.loop 循环,从 MessageQueue取出消息,在Handler所在线程执行可以从其他线程通过 Handlerxian 向这个 MessageQueue中扔 msg
2018-01-25 16:36:05
468
原创 使用 GDB 查看 Jemalloc 内存布局
学习中主要参考 @杏林小轩的 Jemalloc系列:jemalloc 3.6.0源码详解—[0]基础知识jemalloc 3.6.0源码详解—[1]Arenajemalloc 3.6.0源码详解—[2]Chunkjemalloc 3.6.0源码详解—[3]Run and binsjemalloc 3.6.0源码详解—[4]Thread cachesjemalloc 3.6...
2018-01-24 12:03:34
4622
1
原创 ART虚拟机的一个缺陷[Java 8 特性]
1.问题背景:[Android Version]:8.0[问题] CTS:tck.java.time.chrono.TCKChronoLocalDateTime#test_from_TemporalAccessor[CTS CMD]:run cts -m CtsLibcoreOjTestCases -t tck.java.time.chrono.TCKChronoLocalDateTime#tes
2018-01-18 21:35:11
3395
5
原创 Android 抓取 core dump
简单介绍下 coredump抓取方法,该方法适用于Android 5.0之后的 Root版本。1.设置 debug 属性adb shell setprop persist.debug.trace 1设置这个属性的作用:1.创建存放 core文件的目录 /data/core,配置 core_pattern# corefile limiton pr
2017-12-28 22:27:02
9819
原创 ptrace 分析[基于Android 8.0 msm-4.4]
从 man开始:$man 2 ptracePTRACE(2) Linux Programmer's Manual
2017-12-27 11:00:09
2312
转载 Segmentation Fault in Linux 原因与避免(SIGSEGV)
https://www.cnblogs.com/no7dw/archive/2013/02/20/2918372.html
2017-11-17 15:09:32
5739
原创 学习 IDA 使用
1.安装 IDA Pro百科:交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或LinuxWinCE
2017-11-14 19:10:11
5120
1
原创 hook read_chk 导致dex2oat进程 abort
1.问题描述Native Crash 如下:Build fingerprint: 'ddddd:7.0/ddddd/7.3.27:user/release-keys'Revision: '0'ABI: 'arm'pid: 23898, tid: 23898, name: dex2oat >>> /system/bin/dex2oat
2017-11-01 22:20:17
3309
原创 Android profile-guided dex2oat
KeyWord: ART,Dalivk,.class file,dex file, java bytecode, dalvik bytecode, oat file,profile,dex2oat,app-image1. ART vs Dalvik 涉及的各类文件 开始之前,简单介绍下ART和Dalvik。我们知道 java是运行在java虚拟机JVM上,所以JAVA代码可移植性比较强。Andro
2017-11-01 21:17:01
8639
9
原创 Java Class/Object Memory layout
1. Java class memory layoutclass内存布局可以从下面这个函数来分析一个Java类对应的内存布局:function Class::ComputeClassSize()714715716717718719720721722723724
2017-11-01 21:14:45
1522
原创 Android ANR Trace 详解
本文主要总结一下 Signal Catcher 线程在收到 SIGQUIT(3)后,Dump 信息的流程。Android SourceCode: 6.0Keyword:block signal,kRunnable,kSuspended,Checkpoint,traces.txt1.ART中 block 信号信号的block在虚拟机
2017-11-01 21:11:42
24655
1
原创 ART Method Execution
ART Method Execution:1.entry_point_from_quick_compiled_code_ 其作为一个ArtMethod对象的成员, 1.1 一般情况下指向这个函数对应的 quick code的起始地址,而当quick code不存在时,它的值则会代表其他的意义; 1.2 当一个 java 函
2017-11-01 21:08:57
1572
原创 ART Mterp Interpreter 解释 bytecode
Interpreter首先分析 Interpreter 如何解释执行 dalvik byte code,Interpreter 在 ART 7.0有 3种实现:InterpereImplenum InterpreterImplKind { kSwitchImplKind, // Switch-based i
2017-11-01 21:06:25
3732
1
原创 从 Java 调用一个 Native 函数
Java 调用Native函数,实际就是 JNI 调用。我们将关注 Java端如何把参数传递到 Native,Java调用Native函数时,额外的做了哪些事情。在前面分析Native 调用Java 函数时,直接打断点,就能得到调用 backtrace,那是得益于 GDB 对 Native代码的调试支持,可以根据包含 symbols的 so库,自动帮忙我们理清
2017-11-01 21:03:36
6053
原创 从 Native 函数调用 Java 函数
从一个Native调用java方法的实例开始:backtrace(gdb) bt#0 art_quick_invoke_stub () at art/runtime/arch/arm64/quick_entrypoints_arm64.S:667#1 0x0000007f8265ae54 in art::ArtMe
2017-11-01 20:56:14
1947
1
原创 Reference & ReferenceQueue
分析了Java FinalizerReference的创建,Finalizer的执行,以及GC时 Reference的处理。1.Finalizable ClassClass Testpublic class Test { public void finalize() { close(
2017-11-01 20:20:51
2625
原创 ART GC ModUnionTable 实现及使用
上一篇 MarkSweep MarkingPhase的学习中,其实没有完全搞明白ModUnionTable到底是如何工作的,只是根据代码和注释大概知道其意思。本篇来回顾一下 ART 中 ModUnionTable数据结构,以及搞明白它是如何使用的。1.ModUnionTable类// The mod-union table is the union of modified cards.
2017-10-27 00:36:58
1723
原创 ART MarkSweep GC MarkingPhase
Android 8.0 MarkSweep MarkingPhaseMarkingPhase 步骤BindBitmaps()FindDefaultSpaceBitmap()heap->ProcessCards()MarkRoots()MarkReachableObjects()PreCleanCards()1.BindBitmaps()Mark Object 是通过 bit
2017-10-23 22:46:18
1504
转载 Thread Safety Analysis
http://clang.llvm.org/docs/ThreadSafetyAnalysis.html
2017-10-10 13:57:38
396
原创 Dalvik虚拟机GC之 HeapBitmap ,GcMarkStack 与 CardTable
Dalvik虚拟机GC之 HeapBitmap ,GcMarkStack 与 CardTable的创建与使用.
2017-01-05 15:18:32
1287
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅