android开发中常见的调试方法有:

下断点(break point)调试跟踪:

此方法局限性最大,要求程序是可中断,且非系统应用等。

打印日志(systemout、log都是此类):

此方法应用最广泛,也常在应用整个流程的关键位置或方法上记录,方便bug出现时的状态及流程获取。但是日志也仅局限于单个代码位置的状态记录,难以获取更广的上下文信息。本文要补充讨论的内容就是要解决这个问题:

通过获取命令调用的堆栈,来获取更全面的调试信息。至于如何获取这边提供主动抛异常的方法:

try {

        throw new Exception();

        } catch (Exception e) {  

        Log.e(TAG, "Exception: ~~~~~~~~~~ ~~~~~~~~~~", e);

        } 

 另,亦可:

 Log.getStackTraceString(new Throwable())