zoukankan      html  css  js  c++  java
  • Debug Howto


    http://www.android-x86.org/documents/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 <Alt-F1> and then typing: netcfg
    • you can go back to the UI by pressing <Alt-F7>
    • on you host machine, cd <android source code root directory>/out/host/linux-x86/bin/
    • ./adb kill-server
    • ./adb connect <VirtualBox IP address>:5555, after this command, you should see something like below
                * daemon not running. starting it now *
                * daemon started successfully *
                connected to <VirtualBox IP address>: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 <VMName> --natpf1 adb,tcp,*,<localport>,*,5555
      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  

    2a. 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 <VirtualBox ip address>:1234 [application binary name with the path] or [--attach pid]
    • on your host machine, run gdb [path of your application binary]
    • gdb > target remote <VirtualBox ip address>:1234
    • gdb > set solib-search-path <the path to all the shared library binaries>
    • 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

    to:

    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
        disabled
        oneshot

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


  • 相关阅读:
    使用云(BAE)实现android应用数据的远程存取(MySQL)
    VI键盘图
    IOS 6 UIActivityViewController详解 社交分享
    IOS 计算字体控件盖度, 设置粗体+阴影
    myeclipse中tomcat 7.0 关于64位与32位的冲突问题 ( tcnative1.dll )
    九度OJ 1001 A+B for Matrices
    网站10大常见安全漏洞及解决方案
    js网页如何获取手机屏幕宽度
    常用正则说明
    php中的线程、进程和并发区别
  • 原文地址:https://www.cnblogs.com/ztguang/p/12645717.html
Copyright © 2011-2022 走看看