31
Android internals Egor Elizarov SPbSU 2012

Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Embed Size (px)

DESCRIPTION

Course: Android Internals Lecture 10: Debugging/Profiling, Bluetooth/WiFI/RIL

Citation preview

Page 1: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Android internalsEgor ElizarovSPbSU 2012

Page 2: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 20122

Legal info

Android internals by Egor Elizarov is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License

You are free to – copy, distribute, display, and perform the work

– make derivative works Under the following conditions

– Attribution. You must give the original author credit

– Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one

All pictures and trademarks are the property of their respective owners. Use of these trademarks and pictures is subject to owners permissions.

Corrections, suggestions, contributions and translations are welcome!

Page 3: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 20123

Lecture 10

Debugging / profiling

WiFi / Bluetooth / RIL

yegor.yelizarov(at)gmail.com

http://vk.com/android_internalsRev: 1.1Last update: 06/01/2012

Page 4: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 20124

Previous time

Suspend/Resume process

Android PM main components

Android Input subsystem

*.kl, *.kcm, *.idc configuration files

Sensor subsystem

Input noise reduction approaches

Android data storage

Page 5: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 20125

Useful host/target configuration

Page 6: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 20126

Debugging/profiling agenda

Very good presentation about debugging & profiling by Tim Bird

Most popular approaches

Tools covered by Tim in brief

Few words about not covered approaches

Page 7: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 20127

Debugging approaches

Page 8: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 20128

Logging

logcat – obtaining android log– For both C/C++ (LOGE) & Java (Log.e) code

– Have rich formatting options

dmesg – obtatining kernel log– printk()

– Extra logs from userspace through /dev/kmsg

Stdio redirection– For both Java (log.redirect-stdio) & Native (xargs) code

Page 9: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 20129

GNU debugger (gdb)

DDD can be used as graphic backend

On target $ gdbserver :1234 --attach pid Or $gdbserver :1234 /system/bin/app

● On host $ adb forward tcp:1234 tcp:1234 && gdbclient app :1234 app Or $ arm-eabi-gdb # file ./out/target/product/generic/symbols/system/bin/app_process # set solib-search-path

./out/target/product/generic/symbols/system/lib # target remote target_ip:1234

Page 10: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201210

Google debuggers

Fastboot– Protocol & tool to communicate with host over USB

– Install images, erase partitions, booting from host

– Supported in UBoot

ADB

– Remote shell, install, file copy, etc.

– Work over Network/USB

Page 11: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201211

Tracing & dumping

Strace– Shows system calls for a process (or set of processes)

Dalvik Debug Monitor Servic (DDMS)– Integrated into Eclipse

– Provides port-forwarding services, screen capture on the device, thread and heap information on the device, logcat and much more

Dumpsys / Dumpstate– Dumps huge amounts of information about the system, including

status, counts and statistics

– Dumpsys show status information from Android service

Page 12: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201212

Virtual Network Computing

VNC - Graphical desktop sharing system

Transmits input events from host to target

Transmits screen updates from target to host

On target– androidvncserver &

On host– vncviewer target_ip:5901

Page 13: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201213

Profiling approaches

Page 14: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201214

CPU and memory statistics

Common profiling workflow

Smem– Analyze of system-wide memory usage

OProfile– CPU usage statistic for both kernel & userspace

– Monitors execution point periodically

– Should be enabled in kernel

Page 15: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201215

Tracing

Bootchart– Analyze system booting process

– init should be recompiled to add Bootchart support

TraceView– Java methods tracing

– Can be used with DDMS

Page 16: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201216

Benchmarks

Rowboat bench– Set of benchmarks for CPU, 2D, 3D, etc.

– Developed by Rowboat team

0xbench– Another set of benchmarks

– Developed by 0xlab team

Lots of benchmarks in Google Play

Page 17: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201217

Linux Trace Toolkit next generation

Work for both kernel and userspace

Useful to debug threads and processes

Allow to trace only some events

Allow userspace events (/mnt/debugfs/ltt/write_event)

Kernel patches + ltt-control + ltt-viewer

Page 18: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201218

Add LTTng support to Android

Page 19: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201219

Different tricks

Activity Manager - control applications– am start -a android.intent.action.MAIN -n

com.android.camera/com.android.camera.Camera &

input keyevent X – send keyboard events

sendevent – send touch events

setprop/getprop - control system properties

sqlite - access database

start/stop - restart whole system

Page 20: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201220

WiFi in Android

Supports IEEE 802.11 abgn

Supports both IPv4 and IPv6

Based on customized wpa_supplicant

Wifi drivers compiled as modules (Wifi HAL can changed to support built-in drivers)

Page 21: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201221

Wifi subsystem

Page 22: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201222

Porting Wifi driver

Page 23: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201223

Bluetooth in Android

Bluetooth is covered by IEEE 802.15.1

Android BT is based on the BlueZ stack

Android provides subset of BlueZ functionality

Android supports point-to-point and multiple-point connections

Supports maximum 9 simultaneous connections

Page 24: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201224

Bluetooth workflow

Page 25: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201225

Bluetooth subsystem

Page 26: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201226

RIL in Android

Most devices have separate Radio Frequency module for signal strength measurement etc.

Modem often have own CPU with running OS (Ex: Mentor Nucleus)

Usually have firmware

Often kernel interface to these devices is PPP

Page 27: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201227

RIL subsystem

Page 28: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201228

Next Time

Exam

Page 29: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201229

Useful links

http://vk.com/android_internals

http://elinux.org/images/c/c9/Android-tips-and-tricks-2010-10.pdf

http://developer.android.com/guide/developing/debugging/index.html

http://source.android.com/tech/debugging/native-memory.html

http://developer.android.com/guide/developing/debugging/ddms.html

Page 30: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201230

Useful links (2)

http://code.google.com/p/android-vnc-server/wiki/README

http://softteco.blogspot.com/2011/03/android-low-level-shell-click-on-screen.html

http://lttng.org/

http://softteco.blogspot.com/2011/03/android-low-level-shell-click-on-screen.html

http://www.kandroid.org/online-pdk/guide/telephony.html

Page 31: Android internals 10 - Debugging/Profiling, Bluetooth/WiFI/RIL (rev_1.1)

Egor Elizarov SPbSU 201231

Thanks to

Sergey Matyukevich for review and advices (www.linkedin.com/pub/sergey-matyukevich/31/889/769)

Nikolay F. Fominykh for review and advices

Vladimir Barinov for review and advices (http://www.linkedin.com/pub/vladimir-barinov/2a/18a/bab)