Почему перенаправление stdout / stderr на Android не работает? - PullRequest
10 голосов
/ 31 марта 2011

Я скачал SDL 1.3 и протестировал его вместе с OpenGL ES на моем устройстве Android 2.2.Он работает нормально, но я не получаю вывод от вызовов printf.Я попробовал команды ниже, как упомянуто на странице разработчика Android , но ни DDMS в Eclipse, ни adb logcat не сообщает о строках, которые программа пишет с использованием printf.Я выбрал фильтр для тега stdout.

$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start

Что я пропускаю или делаю неправильно?

Ответы [ 2 ]

2 голосов
/ 14 мая 2012

В соответствии с этой презентацией , log.redirect-stdio предназначен для вывода Dalvik, для перенаправления вывода C / C ++ (например, printf), вы должны установить busybox на устройстве и использовать его утилиту xargs как это:

myprogram | xargs log

Это очевидно работает для кода, который вызывается как отдельный исполняемый файл. Если это только для целей отладки, вы можете написать крошечную программу, которая будет вызывать вашу библиотеку и вызывать ее из вашего приложения, используя xargs.

1 голос
/ 01 апреля 2011

Еще один способ сделать это - файл /data/local.prop, содержащий только строку log.redirect-stdio=true.Может быть, это работает лучше?Также обратите внимание, что stdout буферизуется, поэтому может случиться так, что ваш вывод все еще находится в буфере, ожидая очистки.Вы можете позвонить fflush вручную, чтобы проверить это.

...