在程序中加入代码,使可以在logcat中看到打印出的当前函数调用关系
new Exception("print trace").printStackTrace();
Map<Thread, StackTraceElement[]> ts = Thread.getAllStackTraces();
StackTraceElement[] ste = ts.get(Thread.currentThread());
for (StackTraceElement s : ste) {
Log.e("Info ", s.toString());
}
四 Eclipse断点调试Android源码
Android的调试可以不下载完整的Android源码,并且可以不进行源码编译,仅需要Android 源码与设备或者模拟器中使用的同一套代码即可。
以上说法待验证,不过据现在了解的情况应该没问题。
不要Android 源码与设备或者模拟器代码同步,怎样验证呢?
应用APK中会包含源码的行号,调试器是通过这个行号在Android源码中找到相应的行,如果设置断点才会调试。这种说法也是待校验。
校验方式,反编译APK,查看里面是否有行号,好像是通过ANT打包有一个参数可以在打包成APK时去除行号,如果把行号去除了看是否还能调试。
深入 Java 调试体系: 第 1 部分,JPDA 体系概览
深入 Java 调试体系,第 2 部分: JVMTI 和 Agent 实现
深入 Java 调试体系,第 3 部分: JDWP 协议及实现
深入 Java 调试体系,第 4 部分: Java 调试接口(JDI)
在程序中加入代码,使可以在logcat中看到打印出的当前函数调用关系
new Exception("print trace").printStackTrace();
Map<Thread, StackTraceElement[]> ts = Thread.getAllStackTraces();
StackTraceElement[] ste = ts.get(Thread.currentThread());
for (StackTraceElement s : ste) {
Log.e("Info ", s.toString());
}
四 Eclipse断点调试Android源码
Android的调试可以不下载完整的Android源码,并且可以不进行源码编译,仅需要Android 源码与设备或者模拟器中使用的同一套代码即可。
以上说法待验证,不过据现在了解的情况应该没问题。
不要Android 源码与设备或者模拟器代码同步,怎样验证呢?
应用APK中会包含源码的行号,调试器是通过这个行号在Android源码中找到相应的行,如果设置断点才会调试。这种说法也是待校验。
校验方式,反编译APK,查看里面是否有行号,好像是通过ANT打包有一个参数可以在打包成APK时去除行号,如果把行号去除了看是否还能调试。
深入 Java 调试体系: 第 1 部分,JPDA 体系概览
深入 Java 调试体系,第 2 部分: JVMTI 和 Agent 实现
深入 Java 调试体系,第 3 部分: JDWP 协议及实现
深入 Java 调试体系,第 4 部分: Java 调试接口(JDI)