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 效果 想写这个东西其实是因为最近要写个命令行的工具,但是有个问题是什么呢?就是传统的那个黑漆漆的窗口看起来很蛋疼.并且完全看不到重点,于是就想起 来这么一个东西.相对 ...
随机推荐
- Postgresql数据库实用命令
Postgresql 命令 pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 启动数据库 cr ...
- String & dp Problem Round 3 2017.4.22
对每一个特征求前缀和,如果它减去前面的某一个地方的和,得到的每个特征是相等的,那么然后就可以更新答案. 需要解决这个两个问题 1.如何使答案尽量大? 这个很简单,直接找尽量靠前的地方就好了. 2,如何 ...
- 关于即来即停app的功能
Asmallpark软件接口文档说明 编码均采用UTF-8格式传输全部为http,POST请求状态码:200 操作成功 100 服务器异常,稍后再试 404 请求非法 402 数据库 ...
- Python3基础 str 循环输出list中每个单词及其长度
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Linux deepin 中Jetbrain Idea等软件中文显示异常
解决方案:安装常用的中文字体 # 文鼎宋体[推荐] sudo apt install fonts-arphic-uming # 文鼎楷体[推荐] sudo apt install fonts-arph ...
- SxsTrace
https://troubleshooter.xyz/wiki/fix-the-application-has-failed-to-start-because-the-side-by-side-con ...
- ubuntu12 root账户自动登录
Ubuntu为了系统安全,root帐号的密码是随机的,如果临时需要提升至root权限以执行一些命令,需要使用sudo命令.产线上有几台使用Ubuntu的机器,因为使用者不固定,并且执行程序时需要使 用 ...
- BZOJ 1006: [HNOI2008]神奇的国度(弦图染色)
http://www.lydsy.com/JudgeOnline/problem.php?id=1006 题意: 思路: 这个就是弦图染色问题,弦图啥的反正我也不懂,具体看论文https://wenk ...
- 【Python】【有趣的模块】【Bobo】
[python web框架之 bobo的安装配置] [Mac] 我的Mac环境,python3.5 1. 安装bobo : >>> pip3 install bobo 2. 配 ...
- BZOJ 1189 【HNOI2007】 紧急疏散evacuate
题目链接:紧急疏散 这薄脊题我代码不知不觉就写长了…… 这道题二分答案显然,然后用最大流\(check\)即可.设当前二分的答案为\(x\),那么把每扇门拆成\(x\)个点,第\(i\)个代表在第\( ...