Tornado / VXWorks シェル出力をリダイレクトするにはどうすればよいですか?
質問
私は最近、キット内で何が起こっているかをデバッグする方法として Tornado 2 のシェルを使用して組み込み C/C++ プロジェクトに取り組んでいます。このアプローチの唯一の問題は、システムが複雑であり、その結果、かなりの量の出力が必要になることです。Tornado は、新しい情報が到着するたびにウィンドウを「便利に」スクロールします。つまり、エラーを見つけても、すぐにサイトの外に消えて見えなくなることを意味します。上にスクロールして確認するたびに、システムはさらに多くの情報を追加するため、情報を表示するにはハードウェアを切断するしかありません。
Tornado からの出力をリダイレクトする方法を持っている人がいるかどうか知りたいです。
受信した情報にフィルターを適用できるように、小さな Python アプリからすべてを記録する方法があるかもしれないと期待していました。Tornado プロセスに接続しようとしましたが、情報を含むウィンドウは標準の CEditCtrl ではないため、その方法でテキストを抽出するのは行き止まりでした。
誰かアイデアはありますか?
[編集] 私たちは Tornado 2.1.0 のみを実行しており、より新しいバージョンへのアップグレードは私の制御の範囲外であることを言及すべきでした。
[編集2] Tornado で問題のウィンドウは、WinID によれば「AfxFrameOrView42」です。
解決
ここに別の潜在的な方法があります:
-> saveFd = open("myfile.txt",0x102, 0777 ) -> oldFd = ioGlobalStdGet(1) -> ioGlobalStdSet(1, saveFd) -> runmytest() ... -> ioGlobalStdSet(1, oldFd)
これはリダイレクトされます 全て 開いたファイルに stdout アクティビティを追加します。オープンファイルをホスト上に書き込むには、ファイル名をいじる必要があるかもしれません (例:「host:/myfile.txt」などを使用してください)
他のヒント
ホスト シェルには記録機能が組み込まれています。使用できる環境変数は 3 つあります (6.x では使用できません。5.x では使用できません)。
録音 (オン/オフ) :シェルの記録を制御します
RECORD_TYPE (入力/出力/すべて):何を録音するかを決定します
レコード_ファイル :保存先のファイル名。
?shConfig コマンドを使用してシェル環境変数を構成します。?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'.
これを実行するためにホストシェルを使用していることを前提としています。
「runTest()」のようにシェルから起動してテストを実行している場合は、リダイレクト演算子 (>) を使用して、その関数の出力をホスト マシン上のテキスト ファイルに送信できます。
> runTest() > mytestResults.txt
これにより、runTest が生成する出力はすべて mytestResults.txt ファイルに保存されます。
画面上のすべてを常にキャプチャしたい場合は、これについてさらに詳しく調べる必要があります。
rlogin vxworks-target |ティーリダイレクトoutput.txt