为什么在Android重定向标准输出/标准错误不工作?为什么在Android重定向标准输出/标准错误

2019-05-12 02:49发布

我下载了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

我在想什么或做错了吗?

Answer 1:

这样做的另一种方式是具有文件/data/local.prop ,只包含行log.redirect-stdio=true 。 也许这工作得更好? 另外请注意,标准输出缓冲,所以它可能是你的输出依旧坐在缓冲区,等待刷新。 你可以调用fflush手动进行检查。



Answer 2:

根据该演示文稿 , log.redirect-stdio为输出Dalvik的,重定向C / C ++输出(如printf ),则必须在设备上安装的busybox并使用其xargs效用这样的:

myprogram | xargs log

这显然适用于被调用作为一个独立的可执行代码。 如果这是仅用于调试的目的,你可以写一个小程序来调用库中,并使用调用从应用程序xargs



文章来源: Why is redirecting stdout/stderr on android not working?