我正在测试一个监视USB记忆棒的库,并允许监听插件/插件事件。目标系统运行自定义Linux版本,调试对此系统来说很痛苦
因此,为了快速分析发生的事情,我经常使用printf
消息。
对于库的单元测试,我已经开始使用Catch
并使用JUint报告生成测试报告。
问题:如果我插入printf
条消息进行分析,则会将其添加到xml
生成的Catch
报告中。
我的问题:有没有办法将printf
条消息与Catch
生成的报告分开?
感谢。
更新:我想避免写入文件,因为当出现错误并且程序在文件完全写入之前崩溃时,我遇到了问题。
答案 0 :(得分:1)
不熟悉Catch,但显而易见的解决方案是打印到非标准位置。因此,例如,fopen
日志文件和fprintf
而不是标准输出。
另外,与您的问题完全无关,但可以帮助您解决问题,您可以使用gdbserver在平台上进行调试。只需搜索" gdbserver远程调试"有关如何操作的说明。
编辑添加: 如果您担心在发生崩溃时文件会被截断,只需替换" printf"使用包装也可以fflush。
答案 1 :(得分:1)
还有另一种方式。
您可以使用stderr
将调试消息打印到stdout
而不是fprintf
,如下所示:
fprintf(stderr, "%d\n", c);
由于Catch的报告已写入stdout
,您可以使用重定向关闭输出,例如在Linux系统上:
./a.out -r junit 2> /dev/null
答案 2 :(得分:0)
如果你可以将输出写入文件,那么有一个简单的解决方案。使用-o
option更改Catch放置输出的位置。
您可以将其用作-o report.xml
将输出放在名为report.xml
的文件中,也可以使用名为%debug
的特殊文件。当传递%debug
作为输出文件时,Catch尝试写入它知道的给定平台的任何调试工具,这是Android的stderr。