android studio中崩溃无法查看log?
https://www.zhihu.com/question/32024327
android studio中崩溃无法查看log?
用AS,App崩溃(闪退)时是不显示log的,或者一闪而过,而eclipse就可以显示,这样对于查找错误带来很大的困难。问了几个用as的朋友也遇到一样…
关注者
81
被浏览
40,653
23 个回答
吾辈心中亦有惑
说的对,我稍微补充一下
注意右上角,选择 Show only selected application 的话,Log就只会打出来你在上面选择的那个进程
也就是上图中的com.meizu.safe
想看崩溃Log的话,可以选择No Filters,Log等级选成Warn,减少Log刷屏速度
然后就可以看到你期待的Crash Log了。
阿里内推饿了么B&C端,Java/测试/前端/客户端大量招人
这个问题我遇到过,真机上常见,我一般都是切换到模拟器去。目前还不知道解决办法
这个我经常遇到,确实很烦,崩溃后堆栈堆栈信息会自动清空,这时候我会打开eclipse,重现崩溃,查看logcat上崩溃信息,幸好机子配置不错,不然开个AS又开Eclipse会卡出翔
发现一个不用开eclipse也可以查看到崩溃信息的方法:从菜单的Tools打开Android Device Monitor,打开一看就是eclipse的DDMS,换个名字而已。
看桌面截图,左边是Android Device Monitor,右边是AS的logcat,这样可以同时开去查看信息,当应用发生崩溃的时候右边的logcat信息有时候是会给清除掉的,而Android Device Monitor的崩溃信息依然在的,这样就不用再打开eclipse了,对内存不足的童鞋很有用。不过需要注意的是,开了Android Device Monitor是不能打断点debug的,
广告
会计ACCA资料包,通宵熬夜整理,无偿分享给大家!
资料包含:2019年-2020年高顿ACCA全科目考纲解析白皮书电子版、ACCA CPA学霸笔记分享、CPA历年真题以及考试大纲、2019年12月考纲解析电子版、UOL完全版攻略。查看详情
知乎用户
不显示可能是因为程序被杀死了,没有了连接,所以Log都消失了。一般程序崩溃的时候都有一个提示信息,不要立即点击确定按钮,可以在查看信息之后在点击确定。这个时候的Log信息还是存在的。其实也可以写设置Application的UncaughtException实现对崩溃信息的简单处理,这样查看的话就相对麻烦,可以在发布之后使用。
IT、android
刚刚又出现这种情况,同事告诉了我一个方法,如图:选择 DEAD 即可看到 崩溃时的 log
知乎用户
因为你选择了log选择看调试应用的log,你选择查看所有就有了!不管你软件退出没有,因为系统log太多避免无用信息你过滤关键字就好,直接搜索你软件的包名就出来了
看到一些评论说info级别的也看不到,提供一种思路,华为、魅族对Log有限制,魅族需要设置“高级日志输出”为全部允许,而华为则需要在拨号界面输入 *#*#2846579#*#* 打开工程菜单,再将“LOG设置”中AP日志打开
知乎用户
我也遇到过,估计是Android Studio本身的bug,目前不知道解决方案。
最高赞答案在模拟器上应该是可以的,但在真机测试环境中仍然可能无法报出崩溃异常,解决方案是采用CrashHanlder捕捉,并在获取到异常后进行打印或存储,此时不要设置立刻重启app,如果是直接打印的方式,会导致log信息重置,存储到文件的方式则可能存储失败,建议捕捉到异常后不要立刻重启,在测试环境下完全可以让崩溃定格在当前页面
@Override
public void uncaughtException(Thread thread, Throwable ex) {
if (!handleException(ex) && mDefaultHandler != null) {
//如果用户没有处理则让系统默认的异常处理器来处理
mDefaultHandler.uncaughtException(thread, ex);
} else {
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
Log.e(TAG, "error : ", e);
}
//退出程序并重启,可选
startApp();
}
}
private boolean handleException(Throwable ex) {
if (ex == null) {
return false;
}
//收集设备参数信息
collectDeviceInfo(mContext);
//使用Toast来显示异常信息
new Thread() {
@Override
public void run() {
Looper.prepare();
Toast.makeText(mContext, "很抱歉,程序出现异常,即将退出.", Toast.LENGTH_SHORT).show();
Looper.loop();
}
}.start();
//保存日志文件
saveCatchInfo2File(ex);
return true;
}
/**
* 保存错误信息到文件中并打印错误 日志
*/
private String saveCatchInfo2File(Throwable ex) {
Log.e(TAG, "Message: "+ex.getMessage()+"\n"+"Cause: "+ex.getCause());
StringBuffer sb = new StringBuffer();
for (Map.Entry<String, String> entry : deviceInfos.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
sb.append(key + "=" + value + "\n");
}
Writer writer = new StringWriter();
PrintWriter printWriter = new PrintWriter(writer);
ex.printStackTrace(printWriter);
Throwable cause = ex.getCause();
while (cause != null) {
cause.printStackTrace(printWriter);
cause = cause.getCause();
}
printWriter.close();
String result = writer.toString();
sb.append(result);
try {
String fileName = "崩溃日志" + ".txt";
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
if(FileUtils.createFileByDeleteOldFile(CrashPath)){
LogUtils.e("崩溃日志生成成功!");
File file = FileUtils.getFileByPath(CrashPath);
FileOutputStream fos = new FileOutputStream(file);
fos.write(sb.toString().getBytes());
fos.close();
//将异常信息发送到服务器,代码缺失
}
}
return fileName;
} catch (Exception e) {
Log.e(TAG, "an error occured while writing file...", e);
}
return null;
}
程序员
打开命令行,adb logcat >>xxx.log
然后在log里搜 。thread exit
Android -haosou-浏览器-bjtime
在log窗口的右上角有个 上Show only select application. log(凭借印象写的,具体名字肯能不是)点下 换成 all ,就可以看到了。这是ue设计问题。
家有豆柴
crash之后在进程里选 http://xxx.xxx.xxx(DEAD), 会出现之前的crash信息。
广告
想要设计有新意?字由来拯救你!
做设计还在用默认字体?黑体宋体太普通,字由免费送你免版权字体,快来下载体验吧查看详情
Where the Trail Ends
我今天就遇到过!
魅族手机莫名奇妙的崩溃,并且没有日志!
主要是代码在其他手机都好好地啊!
扎铁了!
努力做自己的游戏
AS 如果运行app崩溃的话,不要立刻点掉手机上的那个提示:“XX已停止运行”,不要点确定。这个时候你在AS上可以查看到异常或者bug信息。或者,你可以选择[DEAD]的那一项,来查看异常。
知乎用户
是你们设置问题,刚才崩溃的app,日志在这里选择就可以了
这道题我不会做
我是加了一个全局的异常捕获,发布版的话,崩溃睡上3秒,弹出提示,重启App。调试版的话,崩溃睡上8秒,这8秒的时间足够把崩溃信息给copy下来了
android
哎 我这直接崩溃 报的错都莫名其妙 大家说的找到了 log system 都没有打印出来
知乎用户
知乎用户
这个问题确实很烦。。。不过我的app集成了LeanCloud的bug反馈,每次我都去那里去看崩溃日志。。。当然要保证网络良好,同时不要老崩溃,不然就太麻烦了
同遇到。
把手机拔掉,重新插入后好了。
风一样的男子
.....我也碰到了,好烦啊
========================
坑爹,把360手机助手卸载了log就不会自动清除了
===================
又出现这个情况了,是在debug后按停止debug按钮后出现的,后面发现是Android标签里面的logcat不行,Debug标签下的logcat可以。猜测应该是两个竞争的原因。
广告
听专家解读绿色制造政策,十大应用案例免费下载
践行绿色智能制造,橙色云携专业团队免费支持绿色转型咨询查看详情
安卓软件开发工程师
看一下Application中是否存在android.os.Process.killProcess(android.os.Process.myPid());类似杀死进程的代码。
有点完美主义的选择困难症患者。
把觉得可能崩溃的地方用try catch包裹一下就不会Log闪退了。