Android 调试方法



查看源码的调用关系


一、 查看当前堆栈
在程序中加入代码,使可以在logcat中看到打印出的当前函数调用关系
new Exception("print trace").printStackTrace();
?  使用场景,在什么情况下有效?目前发现在回调中使用第二个方法比较有效,此方法不行


二、 查看当前调用堆栈
		Map ts = Thread.getAllStackTraces();
		StackTraceElement[] ste = ts.get(Thread.currentThread());
		for (StackTraceElement s : ste) {
			Log.e("Info     ", s.toString());
		}


三 使用Android 自带的TraceView工具   -   TraceView工具使用


四  Eclipse断点调试Android源码

Android的调试可以不下载完整的Android源码,并且可以不进行源码编译,仅需要Android 源码与设备或者模拟器中使用的同一套代码即可。

以上说法待验证,不过据现在了解的情况应该没问题。

不要Android 源码与设备或者模拟器代码同步,怎样验证呢?


应用APK中会包含源码的行号,调试器是通过这个行号在Android源码中找到相应的行,如果设置断点才会调试。这种说法也是待校验。

校验方式,反编译APK,查看里面是否有行号,好像是通过ANT打包有一个参数可以在打包成APK时去除行号,如果把行号去除了看是否还能调试。





资料:

Android下打印调用栈

Android调试工具


深入 Java 调试体系: 第 1 部分,JPDA 体系概览
深入 Java 调试体系,第 2 部分: JVMTI 和 Agent 实现
深入 Java 调试体系,第 3 部分: JDWP 协议及实现
深入 Java 调试体系,第 4 部分: Java 调试接口(JDI)


Android 源码调试
Eclipse中跟踪调试Android源代码
Android 源码开发调试方法 - 图很详细
和Android源代码一起工作


查看源码的调用关系


一、 查看当前堆栈
在程序中加入代码,使可以在logcat中看到打印出的当前函数调用关系
new Exception("print trace").printStackTrace();
?  使用场景,在什么情况下有效?目前发现在回调中使用第二个方法比较有效,此方法不行


二、 查看当前调用堆栈
		Map ts = Thread.getAllStackTraces();
		StackTraceElement[] ste = ts.get(Thread.currentThread());
		for (StackTraceElement s : ste) {
			Log.e("Info     ", s.toString());
		}


三 使用Android 自带的TraceView工具   -   TraceView工具使用


四  Eclipse断点调试Android源码

Android的调试可以不下载完整的Android源码,并且可以不进行源码编译,仅需要Android 源码与设备或者模拟器中使用的同一套代码即可。

以上说法待验证,不过据现在了解的情况应该没问题。

不要Android 源码与设备或者模拟器代码同步,怎样验证呢?


应用APK中会包含源码的行号,调试器是通过这个行号在Android源码中找到相应的行,如果设置断点才会调试。这种说法也是待校验。

校验方式,反编译APK,查看里面是否有行号,好像是通过ANT打包有一个参数可以在打包成APK时去除行号,如果把行号去除了看是否还能调试。





资料:

Android下打印调用栈

Android调试工具


深入 Java 调试体系: 第 1 部分,JPDA 体系概览
深入 Java 调试体系,第 2 部分: JVMTI 和 Agent 实现
深入 Java 调试体系,第 3 部分: JDWP 协议及实现
深入 Java 调试体系,第 4 部分: Java 调试接口(JDI)


Android 源码调试
Eclipse中跟踪调试Android源代码
Android 源码开发调试方法 - 图很详细
和Android源代码一起工作

你可能感兴趣的:(待整理)