在开发程序(例如,使用 C 或 Python)时,我经常会编写调试消息来查看程序是否按预期运行。在 Linux 上,可以使用 、grep
、sed
等wc
工具以多种灵活的方式处理此类文本消息。
然而,一旦我想显示图形而不是文本消息,通常会遇到一些麻烦。我必须将一些图形库链接到我的程序(安装后,这本身通常很痛苦),并找出特定库需要哪些样板初始化。
我想知道是否存在类似以下的内容。我们不是将图形库链接到我们的程序,而是将“图形调试消息”输出到管道,其方式与我们将“文本调试消息”输出到标准输出的方式类似。然后我们将此管道(stdout-graphics?)重定向到某个图形查看器,该查看器作为独立程序运行(例如,类似于我们作为单独程序运行 sed 的方式)。
在我的理想世界里,我可以做到
gcc foo.c
./a.out 5>graphics_viewer
并查看程序生成的“调试消息”(可能是一些在 2D 中移动的圆圈和点)。
一些备注:
- 我不知道使用管道而不是直接调用图形库会产生多少开销。我也不知道有多少开销是由于 stdoutgraphics 的编码造成的(即我们可以使用像“draw_rectangle(30,20,100,100); putpixel(3,7); Flip();”这样的文本流或者做我们必须使用压缩格式)。理想情况下,我们应该尽可能通用——如果使用管道最多比使用本地库慢 <10%,那就太好了。
- 我不知道在这种情况下是否已经有“图形指令”的标准格式(例如,涵盖 SDL 库的所有功能)。当然,有许多专门针对较小领域的语言,例如 PostScript 和 TikZ。
- 一旦我们有了 stdoutgraphics,stdingraphics 也会很方便。
答案1
我已经做到了。不是通过输出原始图形命令,而是通过输出状态消息。然后编写一个能够理解这些消息的显示器,并显示正确的内容。
您可以选择完全自定义的显示器,或者发明一种更通用的语言,允许重复使用。
还考虑
还可以考虑使用单元测试框架。单元测试是测试代码的最佳方法,尤其是与测试驱动设计。 (我编写的标准输出程序的第一个图形输出是一个测试工具和一个测试结果可视化器。
也可以看看
dockviz
可以以格式输出dot
(有向图和无向图(图不是图表))(参见https://graphviz.org/doc/info/command.html)