The document discusses debugging and profiling approaches for Android. It describes popular techniques like logging with logcat, using gdb for debugging, tracing with tools like DDMS and LTTng. It also discusses profiling CPU and memory usage with tools like smem and oprofile. Finally, it provides an overview of WiFi, Bluetooth, and radio interface layer subsystems in Android.
2. 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!
2 Egor Elizarov SPbSU 2012
6. 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
6 Egor Elizarov SPbSU 2012
8. 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
8 Egor Elizarov SPbSU 2012
9. 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
9 Egor Elizarov SPbSU 2012
10. 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
10 Egor Elizarov SPbSU 2012
11. 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
11 Egor Elizarov SPbSU 2012
12. 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
12 Egor Elizarov SPbSU 2012
14. 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
14 Egor Elizarov SPbSU 2012
15. Tracing
Bootchart
– Analyze system booting process
– init should be recompiled to add Bootchart support
TraceView
– Java methods tracing
– Can be used with DDMS
15 Egor Elizarov SPbSU 2012
16. 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
16 Egor Elizarov SPbSU 2012
17. 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
17 Egor Elizarov SPbSU 2012
19. 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
19 Egor Elizarov SPbSU 2012
20. 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)
20 Egor Elizarov SPbSU 2012
23. 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
23 Egor Elizarov SPbSU 2012
26. 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
26 Egor Elizarov SPbSU 2012
31. 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)
31 Egor Elizarov SPbSU 2012