0

我正在测试一个监控 USB 记忆棒并允许监听插件/插件事件的库。目标系统运行一个定制的 Linux 版本,调试对这个系统来说很痛苦

因此,为了快速分析正在发生的事情,我经常使用printf消息。

对于库的单元测试,我已经开始使用Catch并使用 JUint 报告器生成测试报告。

问题:如果我插入一条printf消息进行分析,它会被添加到xmlCatch.

我的问题:有没有办法将printf消息和生成的报告分开Catch

谢谢。

更新:我想避免写入文件,因为当出现错误并且程序在文件完全写入之前崩溃时,我遇到了问题。

4

3 回答 3

1

还有另一种方式。

您可以将调试消息打印到stderr而不是像这样stdout使用fprintf

fprintf(stderr, "%d\n", c);

由于 Catch 的报告是写给stdout您的,因此您可以使用重定向关闭您的输出,例如在 Linux 系统上:

./a.out -r junit 2> /dev/null
于 2017-09-29T16:23:47.253 回答
1

不太熟悉 Catch,但一个明显的解决方案是打印到非标准位置。所以,例如,fopen一个日志文件,fprintf而不是标准输出。

此外,与您的问题完全无关,但可以帮助您解决问题,您可以使用 gdbserver 在平台上进行调试。只需搜索“gdbserver 远程调试”以获取有关如何执行此操作的说明。

编辑添加:如果您担心文件在崩溃的情况下会被截断,只需将“printf”替换为也执行 fflush 的包装器。

于 2017-09-29T13:57:43.997 回答
0

如果您可以将输出写入文件,那么有一个简单的解决方案。使用该-o选项更改 Catch 放置其输出的位置。

您可以使用它-o report.xml来将输出放置在一个名为 的文件中report.xml,也可以使用一个名为%debug. 当%debug作为输出文件传递时,Catch 尝试写入它所知道的给定平台的任何调试工具,对于 Android 来说是 stderr。

于 2018-01-14T10:13:12.370 回答