如何获取引发错误的特定代码行

时间:2012-06-29 13:04:49

标签: android error-handling android-emulator

当应用程序启动并关闭时,我正在获取java.lang.NullPointerException。模拟器的错误是“不幸的是,appname已经停止”。它工作正常,直到我写了一堆新代码,并更改了清单。希望它不是清单,但我的问题是,我怎样才能找出问题的代码行?跟踪转储对我来说没有任何意义,即使它很冗长,但......还有11个不让我看到整件事。

我真的不知道那个错误意味着什么。我已经搜索过了,但似乎有一个列表可能意味着什么。我已经尝试了Project> Clean,我已经尝试过再次使用清单,但我仍然得到错误。我检查/取消选中外部库。刚刚完成了人们建议为其他人犯同样错误的事情。所以我真的很想知道,是什么路线设置它?

如果有帮助,这是输出:

06-29 08:37:23.680: E/AndroidRuntime(1225): FATAL EXCEPTION: main
06-29 08:37:23.680: E/AndroidRuntime(1225): java.lang.RuntimeException: Unable to    instantiate activity      ComponentInfo{com.upliftly.android/com.upliftly.android.UpliftlyActivity}: java.lang.NullPointerException
06-29 08:37:23.680: E/AndroidRuntime(1225):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1879)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at android.app.ActivityThread.access$600(ActivityThread.java:122)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at android.os.Looper.loop(Looper.java:137)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at android.app.ActivityThread.main(ActivityThread.java:4340)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at java.lang.reflect.Method.invokeNative(Native Method)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at java.lang.reflect.Method.invoke(Method.java:511)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at dalvik.system.NativeStart.main(Native Method)
06-29 08:37:23.680: E/AndroidRuntime(1225): Caused by: java.lang.NullPointerException
06-29 08:37:23.680: E/AndroidRuntime(1225):     at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:101)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at com.upliftly.android.UpliftlyActivity.<init>(UpliftlyActivity.java:19)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at java.lang.Class.newInstanceImpl(Native Method)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at java.lang.Class.newInstance(Class.java:1319)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
06-29 08:37:23.680: E/AndroidRuntime(1225):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1870)
06-29 08:37:23.680: E/AndroidRuntime(1225):     ... 11 more

4 个答案:

答案 0 :(得分:8)

通常当您看到类似于您发布的堆栈跟踪的堆栈跟踪时,您应该将注意力集中在最后一个

之后的行中
Caused by: 

线。之后,检测具有包名称的行,并且(在大多数情况下)是导致代码异常的行。在您发布的堆栈跟踪中,该行是

at com.upliftly.android.UpliftlyActivity.<init>(UpliftlyActivity.java:19)

答案 1 :(得分:7)

查找您应用的包名称(我猜它是com.uplifty.android):

at com.upliftly.android.UpliftlyActivity.<init>(UpliftlyActivity.java:19)

答案 2 :(得分:1)

就像其中两个答案所说: 像这个例子一样寻找你的包名:

at com.upliftly.android.UpliftlyActivity.<init>(UpliftlyActivity.java:19)

括号将告诉您哪个Java文件以及错误发生在哪一行。所以在这种情况下UpliftlyActivity.java第19行。

虽然您的Manifest或xml文件中的错误不会显示错误所在的文件或行号,因此查找起来比较棘手。

答案 3 :(得分:0)

  

在logcat中,它会给出包名和活动名称   行号。然后你需要观察那个特定的行   什么是可用的变量,那么你需要检查变量   及其对应的xml id。所以借助于此你可以避免   这个错误。我想在你发布的logcat

at com.upliftly.android.UpliftlyActivity.<init>(UpliftlyActivity.java:19)
  

以上行似乎是您的活动线   检查并避免错误。