自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大将军王虎剩的专栏

天地不仁,以万物为刍狗

  • 博客(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

原创 Android Log System

先来张图:

2017-12-28 18:12:56 1501

原创 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

转载 OAT文件格式图解

注:图片转载自 luoshengyang 老师的文章。

2017-11-14 20:26:10 3152

原创 DEX 文件格式图解

计划。

2017-11-14 20:25:17 458

原创 ELF 文件格式学习

先写个标题作为计划,,,,。

2017-11-14 20:23:54 308

原创 学习 IDA 使用

1.安装 IDA Pro百科:交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或LinuxWinCE

2017-11-14 19:10:11 5120 1

转载 ubuntu IDA 安装方法

http://www.cnblogs.com/ryuasuka/p/5493371.html

2017-11-14 15:03:01 3996

原创 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关注的人

提示
确定要删除当前文章?
取消 删除