我最近一直在使用Tornado 2中的shell进行嵌入式C / C ++项目,以调试我们的工具包中正在进行的操作。这种方法的唯一问题是它是一个复杂的系统,因此具有相当多的输出。每当有一些新信息到达时,龙卷风“帮助”滚动窗口,这意味着如果你发现错误,它就会在网站上消失得太快而无法看到。每次向上滚动查看时,系统都会添加更多信息,因此查看它的唯一方法是断开硬件连接。
我想知道是否有人有办法重新定向龙卷风的输出?
我希望有一种方法可以从一个小的python应用程序中记录所有内容,以便我可以对传入的信息应用过滤器。我已经尝试连接到Tornado进程,但是带有信息的窗口不是标准的CEditCtrl,因此以这种方式提取文本是一个死胡同。
任何想法?
[编辑] 我应该提到我们只运行Tornado 2.1.0并升级到更新版本是我无法控制的。
[Edit2] 根据WinID,Tornado中的相关窗口是'AfxFrameOrView42'。
答案 0 :(得分:5)
这是另一种可能的方式:
-> saveFd = open("myfile.txt",0x102, 0777 ) -> oldFd = ioGlobalStdGet(1) -> ioGlobalStdSet(1, saveFd) -> runmytest() ... -> ioGlobalStdSet(1, oldFd)
这会将所有标准输出活动重定向到您打开的文件。 您可能必须使用open的文件名来使其在主机上写入(例如,使用“host:/myfile.txt”或类似的东西)
答案 1 :(得分:3)
主机shell内置了录制功能。 有3个环境变量可用(在6.x中 - 在5.x中不可用):
RECORD(开/关):控制外壳的记录
RECORD_TYPE(输入/输出/全部):确定要录制的内容
RECORD_FILE:保存内容的文件名。
使用?shConfig命令配置shell环境变量。 ?shConfig本身显示变量。 以下是我设置的方法:
-> ?shConfig
...
RECORD = off
RECORD_FILE = C:/test.txt
RECORD_TYPE = output
...
-> ?shConfig RECORD_TYPE all
-> ?shConfig RECORD_FILE myData.txt
-> ?shConfig RECORD on
Started recording commands in 'myData.txt'.
答案 2 :(得分:1)
我假设您正在使用主机shell来执行此操作。
如果您通过从shell运行测试来运行测试,例如“runTest()”,则可以使用重定向运算符(>)将该函数的输出发送到主机上的文本文件。
> runTest() > mytestResults.txt
这会将runTest生成的任何输出保存到文件mytestResults.txt
如果您想一直捕捉屏幕上的所有内容,我将不得不深入研究这一点。
答案 3 :(得分:0)
rlogin vxWorks-target | tee redirected-output.txt