android java 调用栈_Android开发中打印方法调用栈
概要
在日常开发和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开发中打印方法调用栈相关推荐
- android mvp模式例子_Android开发中的MVP模式概念以及网络请求实现顺序
MVP模式 三层 1.view 2.presenter 3.model View 1.view职责,继承view接口,实现方法,持有presenter,this传入presenter Presente ...
- 使用JavaSymbolSolver解决Java代码中的方法调用
为什么创建java-symbol-solver? 几年前,我开始使用JavaParser ,然后开始做出贡献. 不久之后,我意识到我们想对Java代码执行的许多操作不能仅通过使用解析器生成的抽象语法树 ...
- Java在游戏服务器开发中的应用
Java在游戏服务器开发中的应用 width="22" height="16" src="http://hits.sinajs.cn/A1/we ...
- java backbone_[Java教程]移动前端开发中的Backbone之一:Backbone中的模型和集合
[Java教程]移动前端开发中的Backbone之一:Backbone中的模型和集合 0 2015-09-24 17:00:04 当我们开发含有大量Javascript的web应用程序时,首先你需要做 ...
- java方法的调用怎么跳出_JAVA 的一个方法调用另一个方法时,怎么把那个方法里的数据调用出来...
例如:此例子中Calcute()方法调用dispMax()方法时,怎么把curCost的数据调用到publicListgetBidListByName1(Stringname)中来,,,谢谢大家来帮忙 ...
- 梳理:python—同一个类中的方法调用
为什么突然在此提到这个梳理问题呢? 因为在自己实践综合练习学过的知识时,突然觉得有些知识点的运用总是不成功,于是翻过课本进行回顾,总是觉得是对的,可是当再进一步思考"既然是对的,为什么在程序 ...
- jQuery调用其他JS文件中的方法
一个JSP页面中,可以引入多个JS文件 当需要调用某个JS文件中的方法时,可以这么写 首先 在该页面中引入调用的JS文件 <script src="${ctx}/static/js/a ...
- @transactional注解_为啥同一个类中普通方法调用Spring注解方法,注解会失效?看完你就明白,So easy!...
Spring注解(如@Transactional.@Cacheable.@Async等),在使用不当时,很可能会失效.失效的情况有很多种,本文我们就来瞅瞅,为啥同一个类中普通方法调用Spring注解方 ...
- php调用另一个php文件里的变量的值,thinkphp中一个方法调用另一个步骤的变量
thinkphp中一个方法调用另一个方法的变量 //实例化上传类 public function upload() { $upload = new Upload(); $upload->maxS ...
最新文章
- 前端相对路径 与后端相对路径的区分
- 【机器视觉】 repeat算子
- mysql005约束.列级别
- iOS 11之Vision人脸检测
- solaris 关闭、释放socket端口
- Android 11 第三个开发者预览版发布,新增无线调试功能
- 浅析View的事件分发机制
- 冰点还原精灵免费版下载
- Python---猜年龄
- poj 2632 Crashing Robots
- 【C++】2048游戏系列---优化模块第一稿【加载图片】
- 杰理之使用 mic_rec_play_start()测试 mic 无声的解决方法【篇】
- anemometer mysql_十分钟部署Anemometer作为Mysql慢查询可视化系统
- 【C++实现】编译原理 免考小队 消除一切左递归
- mysql sphinx 中文搜索_MySQL中文全文搜索用迅搜还是Sphinx?
- python数据可视化之matplotlib精进pdf_Python数据可视化之matplotlib精进
- 元界快讯|首个物联网元宇宙平台“物联森友会”即将上线
- 会声会影2022全新专业版安装及新功能介绍
- WIN10计算机不支持3D游戏怎么办,windows10系统玩游戏提示显卡不支持3d图形加速无法正常启动游戏怎么办...
- npm i 卡顿 处理方法
热门文章
- OpenShift 4 - 为客户端配置使用基于CA证书的kubeconfig实现无密码登录
- python try catch打印到日志_django 捕获异常和日志系统过程详解
- 基础的c语言题目,几个c语言的基础题目
- python银行排队系统_python-我需要基于Web的系统的消息/排队解决...
- 图像去雾算法_Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题...
- python 打包文件夹_Python打包文件夹(zip/tar/
- 292021年山西高考成绩查询,山西高考分数线查询时间:2020年山西高考成绩什么时候出...
- 婚宴座位图html5,婚礼小知识,婚宴座位怎么安排才不得罪人(主桌)
- java报错空指针异常_分析使用Spring Boot进行单元测试时,报出空指针异常
- java8函数式接口_java8的函数式接口