Android如何打印std::cout/printf(重定向stdout)
Android应用调试时没有stdout和stderr的输出,网上看到的解释都是下面这个样子:
#################################################
Android系统在默认情况下,将stdout和stderr(Java中的System.out 和 System.err)重定向到/dev/null。
如果一个进程运行了 Dalvik VM,那么就可以把上面两个输出拷贝到日志文件中去,这种情况下,系统会把stdout
和stderr输出到标签为“stdout”和“stderr”的日志中。
具体做法如下:
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
(以上命令执行之后立即生效,不过,如果重启手机,则上面的设置就消失了。
可以在 /data/local.prop 文件中加入命令,从而无需重新执行以上命令。)
##################################################
经过实验,这个方法可以输出JAVA代码中的System.out/err。但是现在很多应用为了跨平台用C/C++开发(特别是游戏,我调试的也是游戏),C/C++中的std::cout/printf用这种方法并不能输出,网上有些解释说需要先root设备($adb root),再执行上面的语句。由于我的情况不允许root,所以就没有验证。
继续网上搜索资料,发现一个方法:
freopen函数。
这个函数是用来重定向的,具体用法可以可以自行google。
我在我项目C/C++代码执行的入口地方加入了下面代码:
freopen("/sdcard/tmp/loglog.txt", "w", stdout);
重新编译执行,所有std::cout/printf的输出都输出到了指定文件中。需要注意的是:参数一指定的路径必须是存在的,而且必须有这个路径的写权限。否则,这个代码“没有任何效果”。
这个方法很好解决了我的问题,特此记录一下。
Android如何打印std::cout/printf(重定向stdout)的更多相关文章
- std::cout和printf
禁止std::cout和printf混用,在多线程环境下可能导致coredump. 说明:printf和std::cout分别为标准c语言与c++中的函数,两者的缓冲区机制不同(printf无缓冲区, ...
- printf和std::cout ...endl
printf效率要比std::cout...endl高些,可以减少打印所花时间
- c++ std::cout重定向到文件
cout默认是与监视器(屏幕)相连,cout出来的内容会输出到屏幕上,通常是会在命令行窗口之中.但有时,我们希望将cout出来的具体日志.错误信息写到某个文件之中,而屏幕上仅仅显示出当前进行的任务,以 ...
- (转)Windows管道(Pipe)重定向stdout,stderr,stdin
参考: http://qiusuoge.com/11496.html http://www.cnblogs.com/BoyXiao/archive/2011/01/01/1923828.html st ...
- 基于Android的ELF PLT/GOT符号重定向过程及ELF Hook实现(by 低端码农 2014.10.27)
引言 写这篇技术文的原因,主要有两个: 其一是发现网上大部分描写叙述PLT/GOT符号重定向过程的文章都是针对x86的.比方<Redirecting functions in shared EL ...
- 使用std::cout不能输出显示
在测试一行函数时,出现std::cout不能输出的情况,找不到原因. 1. 只好从main函数第一行,开始测试,直到发现一个函数 o_Initer.ekf_filter(filter, ...
- 多线程std::cout 深入研究
1.研究背景 在测试时发现mingw版本的gcc编译出来的程序,一个主程序新建20个线程,每个线程都循环向cout输出信息,几分钟程序就崩了,而用msvc和gcc-linaro版gcc交叉编译器编译出 ...
- Visual Studio将std::cout输出到Output窗口
在debug的时候,输出到Output需要使用OutputDebugString函数,但部分库的log是采用std::cout输出的,需要用控制台(黑窗)程序来查看输出.有没有一种使用GUI和Outp ...
- std::cout彩色输出
Mac OS效果 Windows 效果 想写这个东西其实是因为最近要写个命令行的工具,但是有个问题是什么呢?就是传统的那个黑漆漆的窗口看起来很蛋疼.并且完全看不到重点,于是就想起 来这么一个东西.相对 ...
随机推荐
- Python3基础 issubclass 判断基类
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- CSS布局总结及实际应用中产生的问题
布局初步 所谓布局,其实是指的将网页内容以一定的方式放到合适的位置上去. 布局的基本步骤: 1, 将“当前版面”以视觉上界限明显的方式进行划分若干个区块,划分只用两种方式: a) 上下结构:此时,只要 ...
- Win7系统中如何查看当前文件被哪一个程序占用了
https://superuser.com/questions/117902/find-out-which-process-is-locking-a-file-or-folder-in-windows ...
- 51nod 1201 整数划分 基础DP
1201 整数划分 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} ...
- 【Coursera】Third Week(1)
The Early World-Wide-Web 关于CERN 欧洲核子研究组织,除了它为世界物理学所作出的卓越贡献,它还是世界上第一个网站,第一个网络服务器,第一个浏览器的诞生地. Robert C ...
- 【Python】【 接口自动化测试】【一】环境搭建
1. 环境配置 我电脑Windows7 64位 + Python2.7 + Oracle客户端 10.2 + cx_Oracle 10g Oracle客户端下载(为此我还申请个Oracle账号) ...
- Django部署生产环境,静态文件不能访问404,以及图片不能访问403
部署环境的搭建请看此博客https://blog.csdn.net/anifans9350/article/details/80145535 查看nginx.conf 文件, nginx文件(etc/ ...
- quality center 支持的平台
- ubuntu 14.04 安装 gflags
1.下载 git clone https://github.com/gflags/gflags 2.编译 进入源码目录(即gflags文件夹) cmake . make -j 24 sudo make ...
- 用java代码将数组元素顺序颠倒
package test; public class Recover { public int[] reverse(int[] a) { int[] b = new int[a.length]; in ...