Android 打印调用栈的方法

摘要:
1.Java层调用堆栈打印:(1)打印本地调用堆栈日志。i(TAG,Log.getStackTraceString(newThrowable()))//打印本地调用堆栈(2)打印远程调用堆栈StringprocessName=“”;intpid=活页夹。getCallingPid();//打印远程调用堆栈//ActivityManageactivityManager=(ActivityMa

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);
}

免责声明:文章转载自《Android 打印调用栈的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇bochs使用指南locust使用-较详细下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

UOS怎么访问windows共享的文件夹

至此就共享成功了如何查看一个文件夹的绝对路径双击打开UOS桌面中的winshare文件夹,右键点击在终端中打开然后再输入pwd,记住这个路径,这个就是UOS中这个目录的绝对路径了...

Mysql 查询以某个字符开头的语句

为了查询以某个字符开头的数据,MySQL中经常使用它。常见的语句如下:以查询文章标题以单词“positive”开头的语句为例:使用通配符:1SELECT*FROM`article`,其中title类似于“positive%”;使用左函数:使用字符串截断函数:1SELECT*FROM`article`其中substring(title,1,1)='positi...

PLSQL操作Oracle创建用户和表(含创建用户名和密码)

1》 打开PLSQL,填写用户名和密码,为数据库选择ORCL2,成功登录后可以在界面顶部看到以下信息system@ORCL这意味着用户系统处于登录状态。菜单栏中的会话可以登录和注销。...

FoxMail 7.2的邮件存储目录修改

在FoxMail升级到7.x之后,邮件的存储路径和策略也发生了变化。许多朋友想更改FoxMail 7.2邮件的位置,因为他们担心重新安装系统时会占用磁盘C上的空间或丢失邮件。但是,FoxMail设置界面中没有提供相应的功能。我们该怎么办?同样,如果您想将邮件存储在磁盘D上,则需要执行以下操作:1.退出运行FoxMail,而不重新安装它。...

springboot项目:扫描不到其他模块的包 Parameter 0 of constructor in com.zjxf.repository.UserRepository

报错信息如下:***************************APPLICATIONFAILEDTOSTART***************************Description:Parameter0ofconstructorincom.zjxf.repository.UserRepositoryrequiredabeanoftype'java...

Windows命令行中cd失效应对方法

管理员模式打开命令行进行操作也不起效从当前目录下跳转到不同分区路径d:\的时候,cdd:\没有成功,当前目录没有发生改变。问题解决方法一添加强制跳转参数“/d”当添加了一个参数/d之后,命令成功地执行了。但是,如果进入的是当前目录的子目录,则可以不使用/d参数。方法二直接输入磁盘名称还有一种方法就是不使用cd命令直接跳转磁盘这里还要注意的一小点是Window...