zoukankan      html  css  js  c++  java
  • Android 打印调用栈的方法

    1.Java层调用栈打印:

    (1)打印本地调用堆栈

    Log.i(TAG,  Log.getStackTraceString(new Throwable())); //打印本地调用堆栈

    (2)打印远程调用堆栈

    String processName = "";
    int pid = Binder.getCallingPid();  //打印远程调用栈
    //ActivityManager activityManager = (ActivityManager) ServiceManager.getService(Context.ACTIVITY_SERVICE);
    try {
        final IActivityManager am = ActivityManager.getService();
        if (am != null) {
            List<ActivityManager.RunningAppProcessInfo> list = am.getRunningAppProcesses();        
            for (ActivityManager.RunningAppProcessInfo info : list) {            
                if (info.pid == pid) {               
                 
                    processName = info.processName;  //打印调用接口的进程名             
                    break;            
                }        
            }
        }
    } catch (RemoteException e) {
        Log.i(TAG, "peace error in getService", e);
    }

    2.C层调用栈打印方法

    #include <execinfo.h>
    #include <stdio.h>
    #include <stdlib.h>
    /*
    u8TraceSize : the size of backtrace you want to dump
    */
    void FPP_PrintTrace (int u8TraceSize)
    {
      void *btArray[u8TraceSize];
      size_t btSize;
      char **strings;
      size_t i;
      btSize = backtrace (btArray, u8TraceSize);
      strings = backtrace_symbols (btArray, btSize);
      printf ("SetVideoMute begin
    ");
      for (i = 0; i < btSize; i++)
      {
        printf ("SetVideoMute #%d:%s
    ", i,strings[i]);
      }
      printf ("SetVideoMute end
    ");
      free (strings);
    }
  • 相关阅读:
    Python(2.7.6) 特殊方法
    Python(2.7.6) 列表推导式
    代码神注释鉴赏,喜欢拿去用
    为什么说重启能解决90%的问题
    为什么说重启能解决90%的问题
    编程语言简史
    编程语言简史
    Shell脚本中循环select命令用法笔记
    程序员职业规划
    程序员职业规划
  • 原文地址:https://www.cnblogs.com/blogs-of-lxl/p/13197773.html
Copyright © 2011-2022 走看看