我无法让我的Nexus S(运行Android 4.0)将本地stdout消息重定向到logcat.我读过我需要这样做:
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
Run Code Online (Sandbox Code Playgroud)
但是,这似乎不起作用.(它确实打破了JUnit,如这里所提到的,所以它并非没有效果.)
作为参考,这是我的代码:
package com.mayastudios;
import android.util.Log;
public class JniTester {
public static void test() {
Log.e("---------", "Start of test");
System.err.println("This message comes from Java.");
void printCMessage();
Log.e("---------", "End of test");
}
private static native int printCMessage();
static {
System.loadLibrary("jni_test");
}
}
Run Code Online (Sandbox Code Playgroud)
和JNI .c文件:
JNIEXPORT void JNICALL
Java_com_mayastudios_JniTester_printCMessage(JNIEnv *env, jclass cls) {
setvbuf(stdout, NULL, _IONBF, 0);
printf("This message comes from C (JNI).\n"); …Run Code Online (Sandbox Code Playgroud) 我正在移植一些现有的C代码以在Android上运行.此C代码将大量输出写入stdout/stderr.我需要在内存缓冲区或文件中捕获此输出,以便我可以通过电子邮件或其他方式共享它.
如何在不修改现有C代码的情况下实现这一目标?
注意:这个问题不是关于将输出重定向到adb或logcat; 我需要在设备上本地缓冲输出.我知道以下问题,但似乎没有解决我的问题:
如何在eclipse中的android应用程序开发中的log-cat上获取本机c ++程序的cout输出.
请有人帮我.
我在有根的 Android 设备中运行 shell 脚本,我试图通过跟踪 shell 脚本生成的 stdout 输出(通过命令或回显)来调试它。是否可以通过将 stdout 重定向到 logcat 来做到这一点?
我的android设备出现问题,其中/ dev下的日志文件夹无法访问,甚至可能不存在.
$ pwd
pwd
/dev
$ cd log
cd log
cd: can't cd to log
$
Run Code Online (Sandbox Code Playgroud)
因此LogCat无法使用,我无法在DDMS中查看设备的stdout或stderr日志.
我google了一下,试图找到有关此问题的一些信息:
http://developer.android.com/guide/developing/tools/adb.html#alternativebuffers
查看stdout和stderr主题似乎很有用,但是这个帖子说它不受支持:
这是另一个有同样问题的人:
我找到了一个临时解决方案,可以手动将我的日志转储到设备上的文件中,但像往常一样,我不能只监视系统的应用程序日志.
有什么解决方案可以建议吗?有什么方法可以将stdout和stderr日志重定向到文件,控制台等?
任何形式的帮助将不胜感激.