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

  在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下

  [email protected]:/ ps

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

  [email protected]:/ logwrapper ps

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

时间: 2024-08-01 00:18:02

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

(转)关于android中bitmap过大导致的程序crash问题

第一种方法--及时回收bitmap内存: 一般而言,回收bitmap内存可以用到以下代码 if(bitmap != null && !bitmap.isRecycled()){ bitmap.recycle(); bitmap = null; } System.gc(); bitmap.recycle()方法用于回收该bitmap所占用的内存,接着将bitmap置空,最后,别忘了用System.gc()调用一下系统的垃圾回收器. 在这里要声明一下,bitmap可以有多个(以为着可以有多个i

Android学习——在Android中使用OpenCV的第一个程序

刚开始学习Android,由于之前比较熟悉OpenCV,于是就想先在Android上运行OpenCV试试 =================================================================================== 1.环境配置 JDK Eclipse ADT CDT Android SDK Android NDK cygwin OpenCV for Android 2.4.9 这部分网上很多,我就不再赘述了,可以参考:http://bl

android 中处理崩溃异常并重启程序

有时候由于测试不充分或者程序潜在的问题而导致程序异常崩溃,这个是令人无法接受的,在Android中怎样捕获程序的异常崩溃,然后进行一些必要的处理或重新启动 应用这个问题困恼了我很久,今天终于解决了该问题,写篇文章记录一下. 首先捕获程序崩溃的异常就必须了解一下Java中UncaughtExceptionHandler这个接口,android沿用了此接口,在android API中: 通过实现此接口,能够处理线程被一个无法捕捉的异常所终止的情况.如上所述的情况,handler将会报告线程终止和不明

Android中源码Launcher主屏幕程序排列详解【安卓Launcher进化一】

最近研究Lancher,从短信Mms的框架中过度到Launcher的bug和需求修改中,下面对launcher最简单的主屏幕程序的程序的布局的详 解,给读者一个入门的感觉,android的主屏幕一共分为5个屏幕,从左到右依次是:0,1,2,3,4.所以想在那个主屏幕放哪些程序或者 widget都可以在布局文件中实现,下面我就说说这个布局文件default_workspace.xml.这是对主屏幕进行排列的布局文件,在这里面 写好,程序运行后就可以实现哪个屏幕放那些特定的程序或widget了.下面

如何在Android中的Activity启动第三方应用程序?

如何在点击某个按键后,执行启动第三方应用程序界面? /** * <功能描述> 启动应用程序 * * @return void [返回类型说明] */ private void startUpApplication(String pkg) { PackageManager packageManager = mContext.getPackageManager(); PackageInfo packageInfo = null; try { // 获取指定包名的应用程序的PackageInfo实例

Android中应用程序获得系统权限

Android中如何修改系统时间(应用程序获得系统权限) 在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真 机,在logcat中总会得到"Unable to open alarm driver: Permission denied ".这个函数需要root权限或者运行与系统进程中才可以用. 本来以为就没有办法在应用程序这一层改系统时间了,后来在网上搜了好久

Android中进程间通信(IPC)方式总结

IPC为进程间通信或跨进程通信,是指两个进程进行进程间通信的过程.在PC和移动设备上一个进程指的是一个程序或者一个应用,所以我们可以将进程间通信简单理解为不同应用之间的通信,当然这种说法并不严谨. 在Android中,为每一个应用程序都分配了一个独立的虚拟机,或者说每个进程都分配一个独立的虚拟机,不同虚拟机在内存分配上有不同的地址空间,这就导致在不同的虚拟机互相访问数据需要借助其他手段.下面分别介绍一下在Android中进行实现IPC的方式. 1.使用Bundle 我们知道在Android中三大

如何确定android中的程序入口?

1.如何确定android中的程序入口? 需要在AndroidMainifest.xml文件中添加这个Activity的配置信息,同时将DemoActivity配置中的intent-filter移动到LauncherActivity配置中. <activity android:name=".DemoActivity" android:label="@string/app_name" > </activity> <activity and

Android:让Link始终保持在程序的WebView中跳转

在Android的WebView中,当点击调用网页的链接时,默认的动作是跳转到系统设定的默认浏览器中.如果想让链接始终在当前WebView中跳转的话,就需要添加以下代码: 1 WebView webView = (WebView) findViewById(R.id.webView1); 2 webView.setWebViewClient(new WebViewClient()); 如果只是想让特定的URL保持在WebView中跳转的话,可以通过重写WebViewClient来实现,示例如下: