概要

在日常开发和debug的过程中,我们都需要看看某一个方法的调用StackTrace,如果是crash或者异常被抛出的情况下会直接看到对应的StackTrace,如:

39 5939 E AndroidRuntime: FATAL EXCEPTION: main

10-03 18:53:33.977 5939 5939 E AndroidRuntime: Process: com.oneplus.filemanager, PID: 5939

10-03 18:53:33.977 5939 5939 E AndroidRuntime: java.lang.SecurityException: UID 1000 does not have permission to content://com.android.externalstorage.documents/document/primary%3ADCIM%2FCamera%2FIMG_20181003_185324.jpg [user 0]; you could obtain access using ACTION_OPEN_DOCUMENT or related APIs

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.os.Parcel.createException(Parcel.java:1946)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:1914)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:1864)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.app.IActivityManager$Stub$Proxy.finishActivity(IActivityManager.java:3746)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.app.Activity.finish(Activity.java:5620)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.app.Activity.finish(Activity.java:5644)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at com.oneplus.filemanager.i.u.a(Unknown Source:68)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at com.oneplus.filemanager.picturedetail.b$a.onItemClick(Unknown Source:38)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.widget.AdapterView.performItemClick(AdapterView.java:318)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.widget.AbsListView.performItemClick(AbsListView.java:1201)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.widget.AbsListView$PerformClick.run(AbsListView.java:3178)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:873)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.os.Looper.loop(Looper.java:193)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6863)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: Caused by: android.os.RemoteException: Remote stack trace:

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at com.android.server.am.ActivityManagerService.checkGrantUriPermissionLocked(ActivityManagerService.java:11239)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at com.android.server.am.ActivityManagerService.checkGrantUriPermissionFromIntentLocked(ActivityManagerService.java:11394)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at com.android.server.am.ActivityManagerService.grantUriPermissionFromIntentLocked(ActivityManagerService.java:11450)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at com.android.server.am.ActivityStack.finishActivityResultsLocked(ActivityStack.java:4016)

10-03 18:53:33.977 5939 5939 E AndroidRuntime: at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:4078)

10-03 18:53:33.977 5939 5939 E AndroidRuntime:

但是在某些情况下是没有这种信息的,下面将介绍如何增加对应的代码来获取StackTrace信息

1、本文只针对当前进程,其他进程的不介绍

2、本文只处理java层,native、kernel层的应用组很少涉及

一、自己抛异常,这种情况比较常见,这里不做介绍

二、使用Thead.dumpStack方法

在需要调试的方法中直接调用Thread.dumpStack()方法

public void testDumpStackTrace(){

Thread.dumpStack();

}

三、StackTraceElement&Log

在需要跟踪的方法中增加如下代码

StackTraceElement[] stack = new Throwable().getStackTrace();

for (StackTraceElement element : stack){

Log.d(TAG, " |----" + element.toString());

}

四、android.os.Debug

Debug类里面有几个getCaller方法可以获得当前的StackTrace,在需要调试的方法法中直接调用即可

public void dumpStackTrace(){

android.os.Debug.getCallers(9);

}

android java 调用栈_Android开发中打印方法调用栈相关推荐

  1. android mvp模式例子_Android开发中的MVP模式概念以及网络请求实现顺序

    MVP模式 三层 1.view 2.presenter 3.model View 1.view职责,继承view接口,实现方法,持有presenter,this传入presenter Presente ...

  2. 使用JavaSymbolSolver解决Java代码中的方法调用

    为什么创建java-symbol-solver? 几年前,我开始使用JavaParser ,然后开始做出贡献. 不久之后,我意识到我们想对Java代码执行的许多操作不能仅通过使用解析器生成的抽象语法树 ...

  3. Java在游戏服务器开发中的应用

     Java在游戏服务器开发中的应用 width="22" height="16" src="http://hits.sinajs.cn/A1/we ...

  4. java backbone_[Java教程]移动前端开发中的Backbone之一:Backbone中的模型和集合

    [Java教程]移动前端开发中的Backbone之一:Backbone中的模型和集合 0 2015-09-24 17:00:04 当我们开发含有大量Javascript的web应用程序时,首先你需要做 ...

  5. java方法的调用怎么跳出_JAVA 的一个方法调用另一个方法时,怎么把那个方法里的数据调用出来...

    例如:此例子中Calcute()方法调用dispMax()方法时,怎么把curCost的数据调用到publicListgetBidListByName1(Stringname)中来,,,谢谢大家来帮忙 ...

  6. 梳理:python—同一个类中的方法调用

    为什么突然在此提到这个梳理问题呢? 因为在自己实践综合练习学过的知识时,突然觉得有些知识点的运用总是不成功,于是翻过课本进行回顾,总是觉得是对的,可是当再进一步思考"既然是对的,为什么在程序 ...

  7. jQuery调用其他JS文件中的方法

    一个JSP页面中,可以引入多个JS文件 当需要调用某个JS文件中的方法时,可以这么写 首先 在该页面中引入调用的JS文件 <script src="${ctx}/static/js/a ...

  8. @transactional注解_为啥同一个类中普通方法调用Spring注解方法,注解会失效?看完你就明白,So easy!...

    Spring注解(如@Transactional.@Cacheable.@Async等),在使用不当时,很可能会失效.失效的情况有很多种,本文我们就来瞅瞅,为啥同一个类中普通方法调用Spring注解方 ...

  9. php调用另一个php文件里的变量的值,thinkphp中一个方法调用另一个步骤的变量

    thinkphp中一个方法调用另一个方法的变量 //实例化上传类 public function upload() { $upload = new Upload(); $upload->maxS ...

最新文章

  1. 前端相对路径 与后端相对路径的区分
  2. 【机器视觉】 repeat算子
  3. mysql005约束.列级别
  4. iOS 11之Vision人脸检测
  5. solaris 关闭、释放socket端口
  6. Android 11 第三个开发者预览版发布,新增无线调试功能
  7. 浅析View的事件分发机制
  8. 冰点还原精灵免费版下载
  9. Python---猜年龄
  10. poj 2632 Crashing Robots
  11. 【C++】2048游戏系列---优化模块第一稿【加载图片】
  12. 杰理之使用 mic_rec_play_start()测试 mic 无声的解决方法【篇】
  13. anemometer mysql_十分钟部署Anemometer作为Mysql慢查询可视化系统
  14. 【C++实现】编译原理 免考小队 消除一切左递归
  15. mysql sphinx 中文搜索_MySQL中文全文搜索用迅搜还是Sphinx?
  16. python数据可视化之matplotlib精进pdf_Python数据可视化之matplotlib精进
  17. 元界快讯|首个物联网元宇宙平台“物联森友会”即将上线
  18. 会声会影2022全新专业版安装及新功能介绍
  19. WIN10计算机不支持3D游戏怎么办,windows10系统玩游戏提示显卡不支持3d图形加速无法正常启动游戏怎么办...
  20. npm i 卡顿 处理方法

热门文章

  1. OpenShift 4 - 为客户端配置使用基于CA证书的kubeconfig实现无密码登录
  2. python try catch打印到日志_django 捕获异常和日志系统过程详解
  3. 基础的c语言题目,几个c语言的基础题目
  4. python银行排队系统_python-我需要基于Web的系统的消息/排队解决...
  5. 图像去雾算法_Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题...
  6. python 打包文件夹_Python打包文件夹(zip/tar/
  7. 292021年山西高考成绩查询,山西高考分数线查询时间:2020年山西高考成绩什么时候出...
  8. 婚宴座位图html5,婚礼小知识,婚宴座位怎么安排才不得罪人(主桌)
  9. java报错空指针异常_分析使用Spring Boot进行单元测试时,报出空指针异常
  10. java8函数式接口_java8的函数式接口