Probleme mit dem Debugging von Android Anwendungen unter Eclipse

Wenn man unter Eclipse Android Anwendungen debuggen möchte hat man es gar nicht so ein einfach. Jeder der das ausprobieren möchte sollte folgende Zeile in die onCreate Methode einer Activity hinzufügen (nach setContentView):

int error=7/0;

Diese Zeile führt zu einer Division durch Null Exception. Würde man sowas nun in C# machen und im Debugmodus ausführen so wird eine Exception ausgelöst und der Debugger zeigt genau die Stelle im Originalcode an an der der Fehler auftritt. So weiß man gleich wo der Fehler zu finden ist.

Wenn wir nun besagtes Beispiel in Eclipse im Debugmodus starten passiert jedoch etwas anderes. Der Debugger hält irgendwo in der Datei ActivityThread Datei an mit der Meldung das er den Source nicht finden kann. Also welche Möglichkeiten bleiben?

Das Debugfenster ist in diesem Moment auch nicht wirklich hilfreich. Ein wenig mehr hilft der LogCat View (wenn er nicht vorhanden ist, einfach über Window -> Show View -> Other hinzufügen) in die Exception angezeigt wird.

Bei unserer Exception müsste dort dann stehen:

Caused by: java.lang.ArithmeticException: divide by Zero

Darunter steht dann der Callstack inklusive Zeilennummer. Damit ist die Sache dann schon ein wenig angenehmer :)

Weitere Informationen gibt es unter:
http://www.anddev.org/a_solution_for_source_not_found_in_eclipse-t3151.html

Debugging von Android Anwendungen unter Eclipse

Wenn man Android Anwendungen mittels Eclipse programmiert so ist man auch in Besitz eines ausgewachsenen Debuggers, welcher einem bei der Fehlersuche hilfreich zur Seite steht. Damit wir etwas zum debuggen haben, bauen wir einen kleinen Fehler in unserer Hello World Programm ein. Das ganze sieht dann so aus:

package net.seeseekey.hello_world;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class hello_world extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

int result = 42/0;

TextView tv = new TextView(this);
tv.setText(result);
setContentView(tv);
}
}

Wenn wir das Programm starten stürzt es im Emulator ab, da eine Division durch Null nicht sehr beliebt ist. Um nun zu Debuggen müssen wir einen Breakpoint setzen. Diesen Breakpoint setzen wir an die Zeile int result = 42/0;. Ein Breakpoint wird gesetzt in dem man links von Quellcode auf der vertikalen Leiste eine Doppelklick vollführt.

Mittels Run -> Debug oder der F11 Taste starten wir das Programm im Debugmodus. Beim ersten Start im Debugmodus fragt uns Eclipse ob wir in die Debugansicht springen möchten was wir ablehnen. Das Programm startet dann ganz normal im Emulator bis der Debugger genau an der Stelle unterbricht wo wir den Breakpoint gesetzt haben.

Nun könnten wir z.B. den Term 42/0 in das Expression Fenster ziehen (Window -> Show View -> Other… -> Debug -> Expressions) und sehen dann das bei der Operation eine Divide by Zero herauskommt.

In dem View Debug befinden sich außerdem die Controls um durch das Programm oder in Funktionen hinein zu steppen. Soviel zum Debugging mittels Eclipse und Android :)