Android中使用logwrapper来重定向应用程序的标准输出

时间:2021-01-27 16:03:15

  在Android应用程序调试中,有时候第三方应用程序的日志输出是通过printf之类的标准函数输出的,logcat不能捕获这些日志,一个方法是使用logwrapper命令来执行第三方应用程序,logwrapper命令可以把第三方应用程序的标准输出重定向到logcat的日志系统中去(缺省级别为LOG_INFO,标签为应用程序名)。

  logwrapper的Usage如下:
  Usage: logwrapper [-a] [-d] [-k] BINARY [ARGS ...]

  Forks and executes BINARY ARGS, redirecting stdout and stderr to the Android logging system. Tag is set to BINARY, priority is always LOG_INFO.

  -a: Causes logwrapper to do abbreviated logging. This logs up to the first 4K and last 4K of the command being run, and logs the output when the command exits
  -d: Causes logwrapper to SIGSEGV when BINARY terminates fault address is set to the status of wait()
  -k: Causes logwrapper to log to the kernel log instead of the Android system log

  例如,在adb shell下

  root@android:/ ps

  ps的结果只在当前控制台下输出,要想把ps的结果输出到adb log中去,可以使用:

  root@android:/ logwrapper ps

  这样adb logcat就能捕获到ps的输出了