码迷,mamicode.com
首页 > 移动开发 > 详细

安卓程序动态调试方法

时间:2016-01-10 21:12:33      阅读:606      评论:0      收藏:0      [点我收藏+]

标签:

  一、使用DDMS

1.将程序使用apktool转化为smali代码,在关键代码左右注入log代码(的smali形式,如输出寄存器v0的值),之后重新打包apk,再执行时可以从 logcat 中看到输出。

2.栈跟踪法:如,在关键代码左右插入new Exception("print trace").printStackTrace();的smali代码形式,之后重新打包签名,再次运行可以在logcat窗口中得到栈跟踪信息。

3.method profiling: 可以用ddms中的method profiling功能跟踪调用过哪些方法。android sdk本身也支持method profiling,在android.os.Debug类中,提供了startMethodTracing()和stopMethodTracing()两个方法来开启与关闭method profiling。如

android.os.Debug.startMethodTracing("123");

a();

android.os.Debug.stopMethodTracing("123");

字符串"123"为trace文件名,代码执行后会在sd卡根目录生成123.trace文件,其中包含了a()方法执行过程中所有方法的调用等信息,可以使用sdk提供的traceview工具来打开它,该工具是android sdk的tools目录下的一个脚本文件。先用adb pull /mnt/sdcard/123.trace将文件拷贝下来,之后执行traceview 123.trace打开TraceView窗口查看文件。可以在smali文件中注入代码来跟踪方法的执行,比如在onCreate()中start trace, 在onStop中stop trace. 注意要在manifest中加上android.permission.WRITE_EXTERNAL_STORAGE的权限。

二、使用AndBug

andbug是用python脚本写的,不支持单步调试,而且无法对自定义的方法设置断点,因此在使用过程中会感到诸多不便。但允许分析人员扩展脚本。

三、IDA Pro

从6.1版本开始支持动态调试android原生程序。

看起来很强大的样子。改天搞个windows系统的pc一定要试验下。

安卓程序动态调试方法

标签:

原文地址:http://www.cnblogs.com/CarrieCui/p/5119070.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!