android studio中崩溃无法查看log?

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了。

发布于 2015-07-10

hi大头鬼hi

hi大头鬼hi

阿里内推饿了么B&C端,Java/测试/前端/客户端大量招人

这个问题我遇到过,真机上常见,我一般都是切换到模拟器去。目前还不知道解决办法

发布于 2015-07-08

Wayen

Wayen

这个我经常遇到,确实很烦,崩溃后堆栈堆栈信息会自动清空,这时候我会打开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的,

编辑于 2015-07-21

logo高顿财经ACCA

广告​

知乎广告介绍

会计ACCA资料包,通宵熬夜整理,无偿分享给大家!

资料包含:2019年-2020年高顿ACCA全科目考纲解析白皮书电子版、ACCA CPA学霸笔记分享、CPA历年真题以及考试大纲、2019年12月考纲解析电子版、UOL完全版攻略。查看详情

知乎用户

知乎用户

不显示可能是因为程序被杀死了,没有了连接,所以Log都消失了。一般程序崩溃的时候都有一个提示信息,不要立即点击确定按钮,可以在查看信息之后在点击确定。这个时候的Log信息还是存在的。其实也可以写设置Application的UncaughtException实现对崩溃信息的简单处理,这样查看的话就相对麻烦,可以在发布之后使用。

编辑于 2015-07-09

MarkShaun

MarkShaun

IT、android

刚刚又出现这种情况,同事告诉了我一个方法,如图:选择 DEAD 即可看到 崩溃时的 log

发布于 2017-04-14

知乎用户

知乎用户

因为你选择了log选择看调试应用的log,你选择查看所有就有了!不管你软件退出没有,因为系统log太多避免无用信息你过滤关键字就好,直接搜索你软件的包名就出来了

发布于 2015-07-10

MetalZC

MetalZC

看到一些评论说info级别的也看不到,提供一种思路,华为、魅族对Log有限制,魅族需要设置“高级日志输出”为全部允许,而华为则需要在拨号界面输入 *#*#2846579#*#* 打开工程菜单,再将“LOG设置”中AP日志打开

发布于 2018-01-19

知乎用户

知乎用户

我也遇到过,估计是Android Studio本身的bug,目前不知道解决方案。

发布于 2015-07-08

北洛

北洛

最高赞答案在模拟器上应该是可以的,但在真机测试环境中仍然可能无法报出崩溃异常,解决方案是采用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;
}

发布于 2017-03-09

胡维

胡维

程序员

打开命令行,adb logcat >>xxx.log
然后在log里搜 。thread exit

发布于 2015-07-25

stake-zh

stake-zh

Android -haosou-浏览器-bjtime

在log窗口的右上角有个 上Show only select application. log(凭借印象写的,具体名字肯能不是)点下 换成 all ,就可以看到了。这是ue设计问题。

发布于 2015-07-16

Freeman Liu

Freeman Liu

家有豆柴

crash之后在进程里选 http://xxx.xxx.xxx(DEAD), 会出现之前的crash信息。

发布于 2016-05-23

logo字由

广告​

知乎广告介绍

想要设计有新意?字由来拯救你!

做设计还在用默认字体?黑体宋体太普通,字由免费送你免版权字体,快来下载体验吧查看详情

停不下来的行走

停不下来的行走

Where the Trail Ends

我今天就遇到过!

魅族手机莫名奇妙的崩溃,并且没有日志!

主要是代码在其他手机都好好地啊!

扎铁了!

发布于 2017-08-31

Mr丶Lucianus

Mr丶Lucianus

努力做自己的游戏

AS 如果运行app崩溃的话,不要立刻点掉手机上的那个提示:“XX已停止运行”,不要点确定。这个时候你在AS上可以查看到异常或者bug信息。或者,你可以选择[DEAD]的那一项,来查看异常。

发布于 2017-08-18

知乎用户

知乎用户

是你们设置问题,刚才崩溃的app,日志在这里选择就可以了

编辑于 2017-03-03

时光

时光

这道题我不会做

我是加了一个全局的异常捕获,发布版的话,崩溃睡上3秒,弹出提示,重启App。调试版的话,崩溃睡上8秒,这8秒的时间足够把崩溃信息给copy下来了

发布于 2016-12-07

秦哥

秦哥

android

哎 我这直接崩溃 报的错都莫名其妙 大家说的找到了 log system 都没有打印出来

发布于 2016-11-04

知乎用户

知乎用户

发布于 2015-08-21

知乎用户

知乎用户

这个问题确实很烦。。。不过我的app集成了LeanCloud的bug反馈,每次我都去那里去看崩溃日志。。。当然要保证网络良好,同时不要老崩溃,不然就太麻烦了

发布于 2015-07-25

wxianfeng

wxianfeng

同遇到。

把手机拔掉,重新插入后好了。

发布于 2019-08-26

卓北北

卓北北

风一样的男子

.....我也碰到了,好烦啊

========================
坑爹,把360手机助手卸载了log就不会自动清除了

===================
又出现这个情况了,是在debug后按停止debug按钮后出现的,后面发现是Android标签里面的logcat不行,Debug标签下的logcat可以。猜测应该是两个竞争的原因。

编辑于 2015-07-15

logo橙色云设计

广告​

知乎广告介绍

听专家解读绿色制造政策,十大应用案例免费下载

践行绿色智能制造,橙色云携专业团队免费支持绿色转型咨询查看详情

郑国强

郑国强

安卓软件开发工程师

看一下Application中是否存在android.os.Process.killProcess(android.os.Process.myPid());类似杀死进程的代码。

发布于 2018-05-31

小小哲

小小哲

有点完美主义的选择困难症患者。

把觉得可能崩溃的地方用try catch包裹一下就不会Log闪退了。

发布于 2016-04-09

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值