Man*_*our 12 debugging android
我刚刚开始调试我的前三行长Android应用程序,我似乎无法像我想的那样使用调试工具.这是我的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int a = 1 / 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我希望调试器停止该线程并向我显示除以零的语句行号.不,相反,它显示了我没有来源的系统内部的一些其他方法.更糟糕的是,也没有异常消息.
在这个应用程序之前,我创建了一个在按下按钮时会执行某项操作的应用程序.如果引发任何异常,则不会再显示有用的行号或异常消息.
截至目前,无法调试我的应用程序.有任何想法吗?
我正在使用最新的SDK以及Eclipse ADT插件并在真实设备(Nexus One)上进行调试.
起初我不得不承认你是部分正确的.有些调试器会在异常时停止执行并显示导致它的代码行.我很想在eclipse调试器中看到这种行为.但其他答案是正确的.
当你在Eclipse中时,转到Window - > Show View - > Other - > Android - > LogCat现在,您将获得模拟器或连接设备上发生的所有调试输出.以您为例,我将获得以下StackTrace.
T03-18 09:45:12.398: ERROR/AndroidRuntime(1778): Uncaught handler: thread main exiting due to uncaught exception
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): java.lang.RuntimeException: Unable to start activity ComponentInfo{android.client/android.client.ClientMain}: java.lang.ArithmeticException: divide by zero
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at android.app.ActivityThread.access$2100(ActivityThread.java:116)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at android.os.Handler.dispatchMessage(Handler.java:99)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at android.os.Looper.loop(Looper.java:123)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at android.app.ActivityThread.main(ActivityThread.java:4203)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at java.lang.reflect.Method.invokeNative(Native Method)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at java.lang.reflect.Method.invoke(Method.java:521)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at dalvik.system.NativeStart.main(Native Method)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): Caused by: java.lang.ArithmeticException: divide by zero
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at android.client.ClientMain.onCreate(ClientMain.java:35)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): ... 11 more
03-18 09:45:12.438: INFO/Process(52): Sending signal. PID: 1778 SIG: 3
Run Code Online (Sandbox Code Playgroud)
如果你进入最深的例外,就会看到一个提升了所有其他人的例外
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): Caused by: java.lang.ArithmeticException: divide by zero
03-18 09:45:12.428: ERROR/AndroidRuntime(1778): at android.client.ClientMain.onCreate(ClientMain.java:35)
Run Code Online (Sandbox Code Playgroud)
我认为这很清楚.在ClientMain的第35行,抛出了异常,它是一个除零异常.如果您无法解决这个问题(在不像示例那样清晰的情况下),您可以在此行或方法的入口点设置断点.现在,调试器将显示所有变量,您可以逐步执行代码,直到发生错误.如果将鼠标悬停在一个varibale上,你可以看到这个变量的值,现在你可以一步一步地尝试理解异常的原因并解决它.如果您深入研究代码,那么您将在负责进行除法的java类中结束,如果您没有将带有此类源代码的jar添加到项目中,则调试器无法向您显示在这一点上的东西.