2017-04-20 9 views
0

rrdtool graph에 대한 스크립트로 작성된 복잡한 표현식이 있습니다. 나는 또한 이것이 일단 효과가 있었다고 생각하지만, 그때 이후로 나는 rrdtool을 업그레이드했다. 불행히도 내가 얻을 수있는 유일한 결과는 ERROR: RPN final stack size != 1입니다.rrdtool의 "ERROR : RPN 최종 스택 크기! = 1"의 이유를 어떻게 알 수 있습니까?

더 나은 진단 (예 : rrdtool의 스택 추적 또는 덤프)을위한 방법이 있습니까?

+0

결국 (http://forums.cacti.net/post-78489.html에서 영감을 얻어) 문제의 원인을 찾았지만 여전히 더 나은 방법으로 디버깅하는 방법은 없습니다. 내' CDEF가 잘못되었습니다. CDEF : S = P0, P1, P22, P23, '+', '+', '+'대신에'CDEF : S = P0, P1, P22, P23, '+''를 썼습니다. –

+0

RPN 표현식이 처리 된 후에 스택에 단일 값이 있어야한다는 것보다 더 많은 것을 말할 필요가 없습니다 ... 스택의 모든 요소를 ​​처리하지 않은 이유는 무엇입니까? ... –

+0

@ Tobi Oetiker : rrdtool이 스택에있는 항목 (플러스 어쩌면 항목 수)을 인쇄한다면 오류를 찾을 수있는 힌트를 적어도 하나 얻을 수 있습니다. 일부 진단 옵션은 정말 유용 할 것입니다. 이 도구는 왜 내가 오류를 만들지 설명 할 필요는 없지만 단순히 어떤 오류를 만들었는지 설명 할 필요가 없습니다. –

답변

0

이 오류 메시지는 RPN에 오류가 있음을 나타냅니다. 일반적으로 이것은 CDEF가 될 것입니다.

RPN이 완전히 처리되면 스택에 정확히 하나의 항목이 있어야합니다. 더 많거나 적다면이 오류가 나타납니다.

가장 좋은 방법은 하나의 샘플 데이터 세트를 종이에 수동으로 RPN 프로세스를 실행하는 것입니다. 오류가 있으면 분명해질 것입니다. RPN에 대해 단계별 디버그를 제공하는 RRDTool 프로세서에 디버그 옵션이 없습니다. 이것은 에 대해 데이터 포인트가 모두 거대한 로그를 생성하기 때문에 실행됩니다.

+0

예 모든 데이터 요소에 수식이 적용되지만 수식에 오류가있는 경우 rrdtool이 종료되어 디버그 출력이 짧아집니다. 귀하의 C 컴파일러가 "구문 오류"라고 말하고 용지의 C 문법으로 프로그램을 검사 할 것을 제안합니다. –

+0

오류 분석 및 RPN의 자세한 디버그 출력이 도움이된다는 데 동의합니다. 그러나 RRDTool은 현재이 기능을 제공하지 않고 있으며, 응답은 앞으로 가능한 것이 아니라 현재 가능한 *을 나타 내기위한 것입니다. –