1 启动独立的ddms(不是从Eclipse启动),

在终端敲命令$ddms

如果提示ANDROID_SWT没有设置,可以在当前终端下敲:

export ANDROID_SWT=~/mydroid/out/host/linux-x86/framework

不过下次打开新终端需要重新设置,为了避免这样的麻烦,可以将这一句添加到 ~/.bashrc

把/system/lib/libc.so和/system/lib.libc_debug.so pull出来,备用,以便回滚,留意一下他们的大小,后面会用到。

2 想要将模拟器中的/system/lib/libc_debug.so做个拷贝,重命名为libc.so,覆盖原来的libc.so,

我试过这个办法,可是失败了:把libc_debug.so pull出来,重命名为libc.so,然后再push回去(/system是只读的,需要重新mount为可读可写,mount方法见步骤6),覆盖原来的libc.so,可是重启模拟器后,又自动复原了。

所以这个办法不可行,改用以下办法:

先替换out目录下的libc.so,再重新生成system.img,

通过搜索发现,libc.so和libc_debug.so在out/目录下有多个版本,obj/目录下的肯定不会用来打包,就看是用../symbols/system/lib下的还是../system/lib下的了,

通过和之前从模拟器上pull下来的libc.so,libc_debug.so的size作比较,可以确定用的是../system/lib下的(疑问:是不是这个版本没有符号表阿?那后面ddms怎么给出调试信息?)。

把libc.so删了(我们已经从模拟器pull了一个libc.so备份,所以不用再备份了),拷贝一个libc_debug.so,重命名为libc.so

重新打包system.img, $~/mydroid/out/host/linux-x86/bin/mkyaffs2image -f ~/mydroid/out/target/product/generic/system ~/mydroid/out/target/product/generic/system.img

3 在~/.android/ddms.cfg中加一句: native=true

.android是隐藏文件,如果看不到,在~目录下按Ctrl+H

4 为了在ddms中显示File和Line信息,还要设置两个环境变量

把/home/peipei/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin加到PATH,让ddms找到arm-eabi-addr2line,

设置export ANDROID_PRODUCT_OUT=~/mydroid/out/target/product/generic,让ddms找到调试信息

5 重启模拟器和ddms,可以看到ddms的界面中多了一个Native Heap标签,切换到Native Heap标签,选择一个进程,点击Full Update,有个小窗口会不停的刷新闪动,耐心的等一会儿,好了,你看到所有信息了(包括File和Line,如果没有步骤4,你就看不到这两列),另外Log中可能搜索到MALLOC_DEBUG = 1 (leak checker)了,这也说明我们做对了。

6 顺便说一下,这个过程中,还学到了如何将/system这个默认只读的文件mount为可读可写(虽然往里面写的东西貌似会在重启模拟器后消失):

$adb shell

#mount //查看已经挂载的目录信息

#mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system //最后两个参数参考上一步的信息

参考文献:

https://tor-proxy.net/proxy/express/browse.php?u=http%3A%2F%2Fwww.mail-archive.com%2Fandroid-porting%40googlegroups.com%2Fmsg06395.html&b=26

更多相关文章

  1. Android系统下抓取网络通信包
  2. Android中级教程之(二)----->Android(安卓)SDK中tools详解
  3. androidのMms模块编辑短彩信
  4. Android让一个apk作为Launcher启动
  5. Android(安卓)adb shell相关命令基本使用
  6. 如何记忆Android模拟器中的快捷键
  7. 个人帐号密码信息管理(PAPIM)软件构想
  8. Android、iOS與WP8整合设计和协同开发_Workshop课程
  9. 如何使用appium desktop 获取Android(安卓)APP 控件的id

随机推荐

  1. Android(安卓)libav移植
  2. Menu菜单(二)————利用GridView实现自定
  3. 长按Home键进入程序和从桌面进入程序
  4. 360buy android 首页打开网络监控数据分
  5. 谈谈IPC
  6. Android(安卓)Studio 出现Error:Connecti
  7. Android(安卓)File
  8. Android开发工具--adb的使用
  9. Android 优秀的开源库
  10. Android动态布局,并动态为TextView控件设