android x86debug,Debug HowTo | Android-x86_weixin_39831170的博客-程序员宅基地

技术标签: android x86debug  


Run Android on your PC



Debug Howto

This page explains how to use adb and gdbserver with VirtualBox

1. use adb:

• In the VirtualBox network configuration, it is simplest to configure it for Host-Only or Bridged.

• boot up Android iso image on the VirtualBox.

• setup ethernet (normally, it will do DHCP by default)

• find the IP address of the android VM, by going to the console and then typing: netcfg

• you can go back to the UI by pressing

• on you host machine, cd /out/host/linux-x86/bin/

• ./adb kill-server

• ./adb connect :5555, after this command, you should see something like below

* daemon not running. starting it now *

* daemon started successfully *

connected to :5555

• ./adb logcat to dump the debug log

2. using adb with a NAT'ed VM

• The steps above work nicely if you have a VM which is set up to use Bridged or Host-Only adapters

• However, if you have a NAT'ed VM you cannot connect to the VM IP from the host

• You will need to set up port forwarding for a host port to be forwarded to the VM port 5555 (which is adb)

• VBoxManage modifyvm

• Example from one machine:

• VBoxManage modifyvm froyo --natpf1 adb,tcp,*,5555,*,5555

• Once this is done, you should see the local port (i.e. 5555 in this case) bound on the host via netstat -a

• You can now connect to the VM by adb localhost:5555

2.a using adb with KVM (qemu)

If you are using KVM instead of Virtualbox you may find the following useful.

Example of running a iso using kvm:

kvm -soundhw es1370 -net nic -net user,hostfwd=tcp::4444-:5555 -cdrom buildname.iso

note the networking arguments: this allows "user networking" which doesn't need root access, while still allowing adb connections, by forwarding them on port 4444 of localhost, so to connect you would use:

adb connect localhost:4444

to disconnect simply (you'll need to do this after stopping/restarting a VM session):

adb disconnect

Its also possible to pass-through usb devices from the host to android guest running in kvm by adding the parameters:

-usb -usbdevice host:2.*

where in the above example that would pass through all devices on the number 2 usb host bus.

3. how to use gdb with gdbserver:

Android-x86 comes with a preinstalled gdbserver. And you can find it in /sbin/gdbserver. To use gdb to debug your process, you need to:

• set up host-only network as mentioned earlier

• in the terminal emulator, run su

• in the terminal emulator, run gdbserver

:1234 [application binary name with the path] or [--attach pid]

• on your host machine, run gdb [path of your application binary]

• gdb > target remote :1234

• gdb > set solib-search-path

• gdb > c

4. Stop zygote to run automatically:

in the vendor/asus/eeepc/init.rc, change following lines

service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server

socket zygote stream 666

onrestart write /sys/android_power/request_state wake

onrestart write /sys/power/state on


service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server

socket zygote stream 666

onrestart write /sys/android_power/request_state wake

onrestart write /sys/power/state on



To start zygote manually just do "start zygote" from the command line.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。