07-09 08:29:13.474 21144-21144/com.example.khan.abc D/AndroidRuntime: Shutting down VM
07-09 08:29:13.475 21144-21144/com.example.khan.abc E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.khan.abc, PID: 21144
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference
at com.example.khan.abc.AudioFragment$1.onClick(AudioFragment.java:125)
at android.view.View.performClick(View.java:4848)
at android.view.View$PerformClick.run(View.java:20262)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5631)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
07-09 08:29:15.195 21144-21144/com.example.khan.abc I/Process: Sending signal. PID: 21144 SIG: 9
13条答案
按热度按时间a11xaf1n1#
此弹出窗口仅在代码中出现致命异常时显示,该异常会停止应用程序的执行。这可能是任何例外
NullPointerException
,OutOfMemoryException
等。如果你还在androidstudio中开发应用程序,最好的检查方法是通过logcat,这是一种快速读取堆栈跟踪并检查应用程序原因的方法。
如果您的应用程序已处于活动状态,则无法使用logcat。所以,你可以实现
Crashlytics
向您提供发生的任何异常的bug报告。odopli942#
你得检查一下
Stack trace
怎么做?在ide上检查windows窗体logcat
如果看不到logcat窗口,请转到此路径并打开它
如果您使用的是googleapi,请转到以下路径
adb logcat>logcat.txt
cuxqih213#
注意:这个答案使用的是androidstudio2.2.2
注意2:我认为您的设备已成功连接。
当你的应用程序崩溃时,你要做的第一件事就是查看logcat,在android studio的底部有一个带有菜单列表的工具栏:
点击“安卓显示器”(我在上图中画了下划线的那一个)
现在,你会得到这样的结果:
“改变”
Verbose
“至”Error
“现在它只显示记录的错误。现在不要担心所有这些错误(如果你有)。好 啊。现在,做你做了什么崩溃你的应用程序。应用程序崩溃后,请转到日志。你应该找到一个新的崩溃日志有很多
at:x.x.x
:和Caused by: TrumpIsPresidentException
例如。去吧Caused by:
在你的日志里的声明。在那旁边
Caused By:
,应该有例外发生。在我的情况下,这是一个RuntimeException
在它下面应该有一条包含蓝色链接的线,例如:如果那样的话
Caused by:
下面没有蓝色文字的行,然后再找一行Caused by:
是的。点击那个蓝色链接。它应该把你带到问题发生的地方。就我而言,这是因为这句话:
所以,现在我知道它为什么崩溃了。因为我自己也在抛出异常。这是一个明显的错误。
但是,假设我有另一个错误:
我查看了我的日志,点击了它给我的蓝色链接,它把我带到了这里:
所以,现在我要调试。根据这个stackoverflow问题,nullpointerexception表示
null
.那么,让我们找出什么是空的。有两种可能。或者
mTextView
为空,或myString
为空。为了找出答案,在mTextView.setText(mString)
行,我加上这两行:现在,像我们以前做的一样(我们将verose改为error),我们希望将“error”改为“debug”。因为我们是通过调试登录的。以下是所有日志方法:
所以,自从我们
Log.d
,我们正在签入调试。所以我们把它改成debug。通知
Log.d
有第一个参数,在我们的例子中是“appdebug”。单击logcat右上角的“无过滤器”下拉菜单。选择“编辑过滤器配置”,为过滤器命名,并在“日志标签”中输入“应用程序调试”。单击“确定”。现在,您应该在logcat中看到两行:现在我们知道mtextview是空的。
我观察我的代码,现在我注意到一些东西。
我有
private TextView mTextView
在我班上名列前茅。但是,我没有给它下定义。基本上我忘了在oncreate()中这样做:
所以这就是原因
mTextView
是空的,因为我忘了告诉我的应用程序它是什么。所以我加上那句话,运行我的应用程序,现在应用程序不会崩溃。fhity93d4#
你可以使用谷歌的adb工具
Logcat file
分析问题。打开
logcat.txt
文件并搜索您的应用程序名称。应该有失败原因、行号、类名等信息。huus2vyu5#
在下面的showtoast()方法中,您必须为context或application context传递另一个参数,这样您就可以尝试了。
de90aj5v6#
让我分享一个基本的logcat分析,当你遇到一个强制关闭(当应用程序停止工作)。
文件
android收集/分析日志的基本工具是logcat。
这是android关于logcat的页面
如果你使用androidstudio,你也可以查看这个链接。
捕捉
基本上,您可以使用以下命令手动捕获logcat(或者只检查androidstudio中的androidmonitor窗口):
有很多参数可以添加到命令中,帮助您筛选和显示所需的消息。。。这是私人的。。。我总是使用下面的命令来获取消息时间戳:
您可以将输出重定向到文件,并在文本编辑器中对其进行分析。
分析
如果你的应用程序正在崩溃,你会得到如下结果:
日志的这一部分向您展示了许多信息:
问题发生时:
07-09 08:29:13.475
重要的是检查问题何时发生。。。您可能会在日志中发现几个错误。。。您必须确保检查了正确的消息:)哪个应用程序崩溃了:
com.example.khan.
这样,您就知道哪个应用程序崩溃了(确保您正在检查有关消息的日志)哪个错误:
java.lang.NullPointerException
空指针异常错误有关错误的详细信息:
Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference
你试图调用方法onBackPressed()
从FragmentActivity
对象。然而,这个物体是null
当你这么做的时候。堆栈跟踪:堆栈跟踪显示方法调用顺序。。。有时,错误发生在调用方法中(而不是在被调用方法中)。
在com.example.khan..audiofragment$1.onclick(audiofragment。java:125)
文件中发生错误
com.example.khan..AudioFragment.java
,内部onClick()
第行的方法:125
(stacktrace显示发生错误的行)它被称为:
它被称为:
它被称为:
等。。。。
概述
这只是一个概述。。。不是所有的日志都很简单,但是错误给出了具体的问题,详细的日志显示了所有的问题。。。它只是分享的想法,并提供入门级的信息给你。。。
我希望我能帮你。。。当做
euoag5mw7#
只需检查一下log cat中的错误。
您可以从eclipse中获得log cat选项:
窗口->显示视图->其他->android->logcat
日志cat包含错误。
另外,还可以通过在调试模式下执行应用程序来检查错误。首先通过以下操作设置断点:
右击project->debug as->android应用程序
0sgqnhkj8#
检查您的
Logcat
留言并查看您的Manifest
文件。应该缺少一些东西,比如定义Activity,
用户权限等。myzjeezk9#
首先,检查应用程序崩溃的点(
Unfortunately, MyApp has stopped.
). 为此,您可以使用Log.e("TAG", "Message");
,使用这一行,您可以在logcat中看到您的应用程序日志。之后,你发现哪一点你的应用程序已经停止它很容易在你身边解决。
blmhpbnm10#
这个答案描述了检索堆栈跟踪的过程。已经有堆栈跟踪了吗?阅读“什么是堆栈跟踪,如何使用它调试应用程序错误”中的堆栈跟踪
问题
您的应用程序退出是因为
RuntimeException
被扔了。其中最常见的是
NullPointerException
.如何解决?
每次android应用程序崩溃(或任何java应用程序崩溃)时
Stack trace
写入控制台(在本例中为logcat)。此堆栈跟踪包含解决问题的重要信息。安卓工作室
在窗口的底部栏中,单击
Logcat
按钮。或者,也可以按alt+6。确保您的模拟器或设备已在Devices
面板。接下来,尝试查找堆栈跟踪,它显示为红色。可能有很多东西登录到logcat,所以您可能需要滚动一点。找到堆栈跟踪的一个简单方法是清除logcat(使用右侧的回收站),然后让应用程序再次崩溃。我找到了烟囱的痕迹,现在怎么办?
耶!你的问题已经解决了一半。
您只需要通过分析堆栈跟踪来找出究竟是什么导致了应用程序崩溃。
阅读“什么是堆栈跟踪,如何使用它调试应用程序错误”中的堆栈跟踪
我还是解决不了我的问题!
如果你找到了你的
Exception
以及它发生的那一行,仍然不知道如何修复它,不要犹豫,问一个关于stackoverflow的问题。尽量简洁:发布堆栈跟踪和相关代码(例如,在抛出
Exception
).pzfprimi11#
如果你的应用程序由于某种原因崩溃而没有良好的stacktrace。试试德布
bmp9r5qi12#
您可以使用以下任何工具:
adb日志
adb logcat>logs.txt(可以使用编辑器打开和搜索错误。)
eclipse logcat(如果在eclipse中不可见,请转到windows->show view->others->android->logcat)
android调试监视器或android设备监视器(键入command monitor或通过ui打开)
安卓工作室
我建议使用android调试监视器,很好。因为当有太多的日志时eclipse会挂起,并且通过adb logcat过滤器和所有的操作都很困难。
eni9jsuy13#
使用logcat并尝试找出导致应用程序崩溃的原因。
如果您使用android studio,则按alt+6或
如果您使用eclipse,那么window->openperspective->other-logcat
转到logcat,从下拉菜单中选择error。这将包含帮助您调试所需的所有信息。如果这没有帮助,张贴日志作为编辑你的问题,有人会帮助你。