Chinaunix首页 | 论坛 | 博客
  • 博客访问: 560950
  • 博文数量: 192
  • 博客积分: 3780
  • 博客等级: 中校
  • 技术积分: 1487
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-26 10:11
文章存档

2012年(6)

2011年(160)

2010年(26)

分类: Java

2011-11-01 09:24:07

在优化Android启动过程时,同事给出一种打印出调用栈的函数。分享一下

  1. java.util.Map ts = Thread.getAllStackTraces();  
  2.   StackTraceElement[] ste = ts.get(Thread.currentThread());  
  3.   for (StackTraceElement s : ste) {  
  4.   android.util.Slog.e("SS     ", s.toString()); //这个是android自带的,如果没有,用其他的打印函数一样  
  5. }  


为了打印出在android启动时,Zygote启动的所有java应用。在

  1. //frameworks/base/services/java/com/android/server/am/ActivityManagerService.java  
  2. private final void startProcessLocked(ProcessRecord app,  
  3.         String hostingType, String hostingNameStr) {  
  4.         //debug add  
  5.         java.util.Map ts = Thread.getAllStackTraces();  
  6.         StackTraceElement[] ste = ts.get(Thread.currentThread());  
  7.         for (StackTraceElement s : ste) {  
  8.             android.util.Slog.e("SS     ", s.toString());  
  9.         }       
  10.     }  

就可以在终端中使用命令

logcat来查看打印出的调用栈了


http://blog.csdn.net/maeom/article/details/6660809

阅读(1443) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~