javaStackTrace

StackTrace线程运行栈

package com.jiek;

import android.util.Log;

/**
 * Created by jiek on 10/12/2015.
 * contact me: gaopinjie@gmail.com
 */
public class StackTrace {
    private static boolean isDebug = true;

    public static boolean isDebug() {
        return isDebug;
    }

    private static void l(String... msgs) {
        for (String msg : msgs) {
            Log.println(Log.DEBUG, "jiekTrace", msg);
        }
    }

    private static void l(StackTraceElement... stackTraceElements) {
        for (StackTraceElement stackTraceElement : stackTraceElements) {
//            way 1
            l(stackTraceElement.toString());
//            way 2
//            l(stackTraceElement.getClassName() + "." + stackTraceElement.getFileName() + "." + stackTraceElement.getMethodName() + ">line:" + stackTraceElement.getLineNumber());
        }
    }

    public static void trace(String msg) {
        l(msg);
        trace();
    }

    public static void traceAll(String msg) {
        l(msg);
        traceAll();
    }

    public static void trace() {
        if (isDebug()) {
            try {
//            way 1
                StackTraceElement[] stackTraceElements = new Throwable().getStackTrace();
                l(stackTraceElements[1], stackTraceElements[2]);
//            way 2
//            StackTraceElement[] stackTraceElements = new Exception().getStackTrace();
//                l(stackTraceElements[1], stackTraceElements[2]);
            } catch (Exception e) {
                e.printStackTrace();
            }
            l("-------");
        }
    }

    public static void traceAll() {
        if (isDebug()) {
            try {
//        way 1
                l(new Throwable().getStackTrace());
//        way 2
//                l(new Exception().getStackTrace());
//         way 3
//                 new Exception("StackTrace: ").printStackTrace();
//         way 4
//                 new Throwable("StackTrace: ").printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

在需要监控的地方,导入 import static com.jiek.originalapk.StackTrace.trace; 就可以使用短方法去执行此静态方法。

SelfLog

线程栈加日志综合工具

使用方法也可同理使用

Last updated

Was this helpful?