私はrrdtool graph
の複雑な表現をスクリプトで作成しました。 これはかつてこれがうまくいったと思いますが、それ以来rrdtoolをアップグレードしました。残念ながら私が得る唯一の出力はERROR: RPN final stack size != 1
です。rrdtoolの「ERROR:RPN final stack size!= 1」の理由を確認するにはどうすればよいですか?
より良い診断(rrdtoolのスタックのトレースやダンプなど)を行う方法はありますか?
私はrrdtool graph
の複雑な表現をスクリプトで作成しました。 これはかつてこれがうまくいったと思いますが、それ以来rrdtoolをアップグレードしました。残念ながら私が得る唯一の出力はERROR: RPN final stack size != 1
です。rrdtoolの「ERROR:RPN final stack size!= 1」の理由を確認するにはどうすればよいですか?
より良い診断(rrdtoolのスタックのトレースやダンプなど)を行う方法はありますか?
このエラーメッセージは、RPNにエラーが発生したことを示しています。通常、これはCDEFになります。
RPNが完全に処理されると、スタックには正確に1つの項目が存在するはずです。多かれ少なかれ、このエラーが表示されます。
検証する最善の方法は、1つのサンプルデータセットに対して手作業でRPNプロセスを実行することです。あなたがエラーを持っているなら、それは明らかになります。 RRDToolプロセッサには、の datapointごとに実行されるので、RPNのステップバイステップデバッグを提供するデバッグオプションはありません。これにより、巨大なログが生成されます。
はいすべてのデータポイントに数式が適用されますが、式rrdtoolにエラーがあっても終了すると、デバッグ出力が短くなります。あなたのCコンパイラが「構文エラー」と言って、あなたのプログラムをC言語の文法でチェックすることをお勧めします。 –
私は、エラー分析とRPNの詳細なデバッグ出力が役に立ちます。しかしRRDToolは現在これを提供しておらず、答えは将来的ではなく現時点で可能なことを示すためのものです。 –
最終的に私は問題の原因を見つけましたが(それはhttp://forums.cacti.net/post-78489.htmlに触発されています)、まだそれをより良い方法でデバッグする方法はありません。私の ' CDEFは間違っていた。 CDEF:S = P0、P1、P22、P23、 '+'、 '+'、 '+'の代わりに 'CDEF:S = P0、P1、P22、P23、 '+''と書いた。 –
RPN式が処理された後、スタックには単一の値が含まれていなければならないことはそれほど多くありません...スタックのすべての要素を処理しなかった理由は何ですか? ... –
@ Tobi Oetiker:rrdtoolがスタック上の項目(多分アイテムの数)を印刷する場合、エラーを探すためのヒントを少なくともいくつか取得します。いくつかの診断オプションは本当に便利です。このツールは、なぜ私がエラーを起こしたのかを説明する必要はなく、単純にどのエラーが発生したのかを説明する必要はありません。 –