[Monkey] Fehler auf Android debuggen?

Übersicht Andere Programmiersprachen Beginners-Corner

Neue Antwort erstellen

 

PhillipK

Betreff: Fehler auf Android debuggen?

BeitragMi, Jun 05, 2013 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Huhu!

Ich teste grade meine Inputsache (in nem anderen thread) auf dem Handy.
Dh ich versuche es zumindest.
Problem ist, das ich einfach keinerlei informationen, ausser einem error kriege. Nirgends finde ich hinweise, warum des denn schiefläuft Very Happy

Hier mal ein bild des fehlers:
user posted image

Ist nicht grade aussage kräftig. Wenn ich für andere targets (html5 oder glfw) builde, funzt alles wie gewünscht. Nur aufm handy, dort wo einfach mal keine information durchsickert, kackts direkt ab Sad

Irgendwelche vorschläge, wie man android apps debuggt? Print etc wäre ja irgendwie komisch :O (wobei ich das besser mal direkt probiere!)

Edit:

Print hat nicht geholfen. Aber den fehler hab ich dennoch behoben (und ich sag nur: wtf...)
Problem war, das ich eine Datei "Input.monkey" hatte. Hab die einfach mal brav in "TouchInputFile" umbekannt und sieh da? Es funktioniert -.-

Egal, das problem besteht weiterhin: Ich konnte ums verrecken noch keinerlei information entlocken, als der fehler auftrat. Dh wenn alles läuft, kann ich fehler noch grafisch ausgeben. Schmierts direkt ab, bin ich auf die -nennen wir sie mal dürftige- fehlermeldung angewiesen.
Jemand eine idee? :3

DAK

BeitragMi, Jun 05, 2013 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
(Wieder nix Monkey-spezifisches sondern generelles Android-Zeug)

Wenn du "adb logcat" mit eingestecktem Handy in ein Kommandozeilenfenster eingibst (oder "adb shell" gefolgt von "logcat"), dann kannst du alles auslesen, was dein Programm über den StandardIO (nehme an, unter Monkey ist der per Print zu erreichen) schreibt. Vielleicht hilft das.
Gewinner der 6. und der 68. BlitzCodeCompo
 

PhillipK

BeitragMi, Jun 05, 2013 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay?

Dh ich könnte mir den ganzen krams schön brav in eine datei schreiben lassen? Klingt gut.

Allerdings: Wann muss ich das anwenden? Direkt beim builden // starten aufm droid ? Oder einfach "einmalig" beim loslegen am tag und dancah immer nur die datei checken?

*mal test*

Tennisball

BeitragMi, Jun 05, 2013 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Das kannst du anwenden wann du willst. Smile
Eigentlich wird mit adb logcat alles ausgegeben was im Log drinsteht, seitdem du ihn das letzte mal geleert hast. Leeren kannst du den Log mit "adb logcat -c".
Wenn du den Log in eine Datei schreiben willst statt der Kommandozeile schreibst du "adb logcat > [Dateiname]".
Wenn du nur die Ausgaben deiner App haben willst und nicht alles, kannst du noch mit "-s [Tag]" den Log filtern. Ich weiß allerdings nicht, wie man bei Monkey einen Tag festlegt bzw. wenn es da einen festgelegten gibt, wie der heißt.

Gruß,
Tennisball

DAK

BeitragMi, Jun 05, 2013 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie das funktioniert:
Alles was deine App in den Output-Stream und den Error-Stream schreibt (in Java per System.out.println("text"); bzw. System.err.println("text"); ) wird wo abgespeichert. Mit Logcat lässt sich diese Datei auslesen. Dabei kriegst du zuerst alles was passiert ist, seit dem du das letzte Mal Logcat verwendet hast, und dann tickt alles Neue live durch. Da kannst du direkt am Schirm sehen, was sich am Handy tut.

Möchtest du stattdessen lieber alles für die spätere Analyse aufheben, verwende "adb logcat > dateiname.txt". Mit diesem Befehl speichert er dir den Inhalt der Logcat in die von dir angegebene Datei, allerdings nicht nur, was bis dahin passiert ist, sondern auch das, was noch passiert. Wenn du alles aufgenommen hast, was du brauchst, einfach das Handy kurz abstecken.

Edit: Sorry, Tennisball, bin während dem Tippen angerufen worden und hab nicht mitgekriegt, dass du schon was gepostet gehabt hast.
Gewinner der 6. und der 68. BlitzCodeCompo
 

PhillipK

BeitragMi, Jun 05, 2013 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh okay Smile

Leider bin ich grade mal wieder.. low-on-time >.< Es gibt soviele dinge die ich gerne machen möchte, testen möchte und überhaupt - aber irgendwie muss man immer, wenns spannend wird, sich fertig machen und "die welt dadraussen" bestreiten Smile

Meine frage bezog sich auf die arbeitsweise von logcat.
Ich hatte erst angenommen, man "aktiviert" eine art echtzeit-logger, welcher dann mit Monkey IDE // JungleIDE oder sonstwem "mitläuft" und mir die ausgabge gibt.
Das es aktiv ein log aufm handy gibt, wusste ich nicht Smile

Nun dann werd ich mich wohl mal dranmachen, mir das was brauchbares zu basteln - vielleicht findet sich ja was brauchbares, um JungleIDE aktiv die logdatei in gewissen intervallen auslesen zu lassen (pseudo echtzeit ausgabe direkt in der konsole^^)

Zum tag: Ich nehme an, das die logdatei keinem speziellen aufbau folgt. Dh es ist eine einfache datei mit zeilenweisem text - eben wie eine konsole.
der TAG ist dann einfach nur ein suchwort, was ich theoretisch durch überladen der Print funktion anfügen kann:
BlitzMax: [AUSKLAPPEN]

Function Print:Int(str:String)
Return monkey.lang.Print("[APPNAME] " + str)
End


Die ausgabe:
Code: [AUSKLAPPEN]

[APPNAME] Ich bin in OnCreate()

(achja, die peinlichen newbie prints Very Happy)

Wäre btw ne ganz nette einrichtung wenn ich mir das angewöhne. Da ich typsicherweise meine Klassen in eigene dateien auslagere, könnte jede für sich Print überladen und als präfix sowas wie:
[MeinKrassesGame -> MeineKrasseKlasse] + string
nutzen. Mh Smile




Mal was anderes: Da es auch TCP / UDP streams gibt - Könnte man sich nicht ein auslese programm basteln, welches streams empfängt und ausgibt?
Dh Print wird für gewisse targets, wie Android, so überladen, das es einen UDP stream nutzt und die daten dahin schickt, simple zeilen.
sollte das failen, gibts den normalen print, welcher mit logcat ausgelesen werden könnte...
Das gegenstück, den empfänger, kann ich ja noch selber schreiben. Nur bei monkey haperts XD
Aber: Theoretisch wäre das machbar, oder? (Heutzutage hat ja eh jeder 2te Haushalt einen WLAN router und jeder, der für ein mobiles device programmiert, hat dieses, wenn vorhanden, im wlan sitzen...)

EDIT:

Narf. Genau. Liveupdates. Das wollte ich xD
Also hat sich die tCP / UDP frage erübrigt. Ich war ebenfalls lange mit tippern hier beschäftigt, DAK, deine nachricht kam grade erst bei mir an^^

DAK

BeitragMi, Jun 05, 2013 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, entweder verwend logcat direkt oder mach dir ein einfaches Programm, was den Logcat-Output als InputStream nimmt und interpretiert wie du es willst. Geht zumindest in Java extrem einfach.
Gewinner der 6. und der 68. BlitzCodeCompo

Midimaster

BeitragMi, Jun 05, 2013 23:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Seltsam... mit welcher Monkey Version arbeitest du?

Seit V67, oder so..., werden die Log-Live-Ausgaben direkt in der Monkey-Console angezeigt, nachdem man eine App in Monkey gebuildet hat und Monkey sie auch noch automatisch auf dem Handy starten konnte.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
 

PhillipK

BeitragDo, Jun 06, 2013 0:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh?
Nun dann muss ich updaten. ich glaube, ich laufe grade auf V66. Hab des ganze schon ein paar tage rumfliegen, aber nicht viel elan gehabt. Erst seit ich mein smartphone (diesmal KEIN iphone *erleichtert*) habe, packt es mich tierisch.

(Meine ziele: Kongregate und private apps fürs phone Very Happy)

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group