Pourquoi est rediriger stdout/stderr sur android ne fonctionne pas?
J'ai téléchargé SDL 1.3 et testé en collaboration avec OpenGL ES sur mon android 2.2 appareil. Il fonctionne très bien mais je n'ai pas les résultats de la printf
appels. J'ai essayé les commandes ci-dessous, comme mentionné lors de la développeur android page mais ni DDMS
dans Eclipse, ni adb logcat
rapports les cordes que le programme écrit à l'aide de printf
. J'ai fait en sorte de filtre pour le stdout
tag.
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
Ce qui me manque ou faire du tort?
FWIW, ce qui provoque le Dalvik VM pour créer un thread que des copies stdout/stderr dans le fichier journal. Vous devez être root pour arrêter/démarrer l'application du cadre. Voir aussi stackoverflow.com/questions/17188987/... .
OriginalL'auteur trenki | 2011-03-31
Vous devez vous connecter pour publier un commentaire.
Une autre manière de faire est d'avoir un fichier
/data/local.prop
, contenant uniquement la lignelog.redirect-stdio=true
. Peut-être que cela fonctionne mieux? Notez également que stdout est mis en mémoire tampon, de sorte qu'il se pourrait que votre sortie est toujours assis dans le tampon, en attente d'être vidé. Vous pouvez appelerfflush
manuellement pour vérifier cela.Hmm, je ne savais pas que ce serait vous donner le problème sur un appareil. Il fonctionne très bien sur l'émulateur si. Je sais que l'émulateur est une douleur à utiliser, surtout avec l'OpenGL, mais c'est peut-être une option pour les accessoires de dépannage? Selon un message par David Turner sur le NDK groupe (voir la section groups.google.com/group/android-ndk/msg/0d37b24df6df7cde ) le stop/setprop/départ doit être considéré comme non pris en charge.
Est-ce de travailler à partir de C? Je vois stderr sortie de logcat de java quand je fais cela, mais je ne vois pas de sortie de C appels à quelque chose comme fprintf(stderr, "quelque chose").
OriginalL'auteur svdree
Selon cette présentation,
log.redirect-stdio
est pour Dalvik sortie, afin de rediriger les C/C++ de sortie (tels queprintf
), vous devez installer busybox sur l'appareil et l'utilisation de sonxargs
utilitaire comme ceci:De toute évidence, cela fonctionne pour le code qui est appelé comme un fichier exécutable autonome. Si c'est uniquement pour des fins de débogage, vous pouvez écrire un petit programme à appeler votre bibliothèque et de l'appeler à partir de votre application en utilisant
xargs
.OriginalL'auteur gfour