오류, 버그, 질문 - 페이지 822

 
falkov :

예, 물론 표시됩니다. 나는이 장소를 가지고 있으며 다양한 검사로 겹쳤습니다.

나는 장소를 알고 있는데 왜 이런 일이 일어나는지 이해할 수 없습니다!

또한 이 줄 앞에 있는 배열의 크기와 범위를 벗어난 다른 변수를 확인합니다.

그러나 여전히 전문가는 일주일에 두어 번씩 넘어집니다.

아마도 이것은 내 실수이며 나는 그것을 신경 쓰지 않습니다. 나는 개가 어디에서 뒤적거렸는지 알아낼 수 있는 메커니즘이 없다는 사실에 반대합니다.

동시에 간단하고 편리한 예외 메커니즘이 있습니다. 그런 경우를 위해 한 번 소개되었습니다.

Renat는 이 메커니즘을 도입하자마자 비합리적인 프로그래머가 즉시 엉망이 되기 시작하고 얽히게 할 것이라고 대답했습니다.

제 생각에는 일종의 우스꽝스러운 주장입니다.

글쎄요, 예외에 대한 MetaQuots의 입장은 알려져 있고 취소할 수 없습니다(저는 약 2년 전에 그들과 논의했습니다). 출처의 일부가 표시되면 더 도움이 될 것입니다.
 

그건 그렇고, 예외에 대한 대안으로 원하는 경우 다음과 같이 OnError 이벤트 핸들러를 간단히 구현할 수 있습니다.

 bool OnError( uint errorcode, string filename, uint lineno, uint colno, string context)
{
  ...
   if (critical)
  {
     return ( true ); // для подтверждения остановки выполнения скрипта
  }
   else
  {
     return ( false ); // для продолжения выполнения на чарте (текущий вызов прерывается, но следующие тики/таймеры и пр. работают)
  }
}
 
기본 제공 코드 검사, 동일한 어설션을 사용하십시오.
 
marketeer :

그건 그렇고, 예외에 대한 대안으로 원하는 경우 다음과 같이 OnError 이벤트 핸들러를 간단히 구현할 수 있습니다.


나는 이것이 완전히는 아니지만 이것이 나를 만족시켰다고 생각합니다. 왜냐하면 왜냐하면. OnError에서 볼 수 있도록 필요한 변수를 전역으로 선언해야 합니다.

그러나 나는 여전히 그것에 만족할 것입니다. 때때로 오류를 잡아야 합니다. 문제를 찾아 수정한 후 로컬 오류에서 다시 숨길 수 있습니다.

OnError에 대한 이 아이디어를 Renat에게 어떻게 전달하시겠습니까?

 
falkov :

나는 이것이 완전히는 아니지만 이것이 나를 만족시켰다고 생각합니다. 왜냐하면 왜냐하면. OnError에서 볼 수 있도록 필요한 변수를 전역으로 선언해야 합니다.

그러나 나는 여전히 그것에 만족할 것입니다. 때때로 오류를 잡아야 합니다. 문제를 찾아 수정한 후 로컬 오류에서 다시 숨길 수 있습니다.

OnError에 대한 이 아이디어를 Renat에게 어떻게 전달하시겠습니까?

기본적으로 없습니다. 프로그램에 치명적인 오류가 발생한 경우 그 운명은 언로드뿐입니다.

각 중요한 기능에는 반환 코드가 있으며 모든 것이 자세히 설명되어 있습니다. 따라서 개발자는 자신의 프로그램에 대한 제어권을 잃지 않습니다.

ps: 물론 잘못된 색인 위치를 분명히 표시한 후에도 "당신은 거의 주지 않습니다!"라는 말을 듣는 것은 놀라운 일입니다.

 
TheXpert :
기본 제공 코드 검사, 동일한 어설션을 사용하십시오.

자, 여기서 상황은 다릅니다. 사람에게 산발적인 오류가 있습니다(불분명한 조건에서 드물게 재현됨). 그에게는 이미 전문가가 빠져 있습니다. 그가 주장을 하면 그는 정확히 같은 방식으로 빠지지만 즉시는 아닐 것이며 그 이유도 분명하지 않을 것입니다. 그래서 그에게 코드를 보여달라고 요청합니다.

그리고 힙의 경우 스크립트 중지로 이어지는 오류가 위치 표시뿐만 아니라 전체 컨텍스트(호출 스택, 변수 내용 등)와 함께 발생하면 유용할 수 있습니다. 전처리기 지시문 을 사용하여 이 출력을 선택 사항으로 만들 수 있습니다. 오류 진단 수준을 지정합니다. 기본적으로 그대로 두지만 수정할 수 있습니다.

Документация по MQL5: Основы языка / Препроцессор
Документация по MQL5: Основы языка / Препроцессор
  • www.mql5.com
Основы языка / Препроцессор - Документация по MQL5
 
marketeer :

자, 여기서 상황은 다릅니다. 사람에게 산발적인 오류가 있습니다(불분명한 조건에서 드물게 재현됨). 그에게는 이미 전문가가 빠져 있습니다. 그가 주장을 하면 그는 정확히 같은 방식으로 빠지지만 즉시는 아닐 것이며 그 이유도 분명하지 않을 것입니다. 그래서 그에게 코드를 보여달라고 요청합니다.

그리고 힙의 경우 스크립트 중지로 이어지는 오류가 위치 표시뿐만 아니라 전체 컨텍스트(호출 스택, 변수 내용 등)와 함께 발생하면 유용할 수 있습니다. 전처리기 지시문 을 사용하여 이 출력을 선택 사항으로 만들 수 있습니다. 오류 진단 수준을 지정합니다. 기본적으로 그대로 두지만 수정할 수 있습니다.

디버깅하는 동안 전체 컨텍스트를 추적할 수 있습니다.

또 다른 점은 특정 영역에서 산발적인 오류를 잡아야 한다는 것입니다.

그리고 여기 에 history 에서 디버거를 실행할 필요가 있습니다.

문제는 오래되었고 여러 번 제기되었지만 아직까지는 문제가 없습니다.

 
marketeer :

자, 여기서 상황은 다릅니다. 사람에게 산발적인 오류가 있습니다(불분명한 조건에서 드물게 재현됨). 그에게는 이미 전문가가 빠져 있습니다. 그가 주장을 하면 그는 정확히 같은 방식으로 빠지지만 즉시는 아닐 것이며 그 이유도 분명하지 않을 것입니다. 그래서 그에게 코드를 보여달라고 요청합니다.

산발적인 오류의 95%는 초기화 오류 또는 그 부족과 관련이 있습니다. 따라서 코드 조각 은 도움이 되지 않지만 편집증 때문에 전체를 제공하지는 않습니다. ;-)

그 이유는 발현된 곳에서 아주 멀리 떨어져서 찾아야 하고, 개발자들에게 실행을 요구하는 것은 후행이 더 쉽다. 그것은 확실히 도움이 될 것입니다.

// 진실이 도움이 될까요, falkov? :)

 
Urain :

디버깅하는 동안 전체 컨텍스트를 추적할 수 있습니다.

또 다른 점은 특정 영역에서 산발적인 오류를 잡아야 한다는 것입니다.

그리고 여기 에 history 에서 디버거를 실행할 필요가 있습니다.

문제는 오래되었고 여러 번 제기되었지만 아직까지는 문제가 없습니다.

그것은 진실이기도 하다. 오류의 성격에 관계없이 많은 도움이 될 것입니다.
 
marketeer :

자, 여기서 상황은 다릅니다. 사람에게 산발적인 오류가 있습니다(불분명한 조건에서 드물게 재현됨). 그에게는 이미 전문가가 빠져 있습니다. 그가 주장을 하면 그는 정확히 같은 방식으로 빠지지만 즉시는 아닐 것이며 그 이유도 분명하지 않을 것입니다. 그래서 그에게 코드를 보여달라고 요청합니다.

코드를 보여주는 것은 의미가 없습니다. 누가 이해해야 하는 상당히 복잡한 논리가 있고 오류가 발생한 사이트가 단순하지만 오류를 찾는 데 아무 것도 제공하지 않고 반 화면에 기능이 있기 때문입니다. 순수한 코드의. 각 변수는 위와 아래에서 한계를 확인합니다. 변수가 이러한 한계를 벗어나면 모든 변수와 해당 값을 나열하는 메시지가 표시됩니다. 물론 어딘가에 오류가 있지만 여기 있습니다!! 이것은 일주일에 한두 번 일어난다는 것을 상기시켜 드리겠습니다. 고문은 24시간 쟁기질을 합니다.

그리고 나서, 저는 이번이 처음이기는 하지만 이 특별한 경우에만 관심이 있는 것이 아닙니다.

그리고 힙의 경우 스크립트 중지로 이어지는 오류가 위치 표시뿐만 아니라 전체 컨텍스트(호출 스택, 변수 내용 등)와 함께 발생하면 유용할 수 있습니다. 전처리기 지시문 을 사용하여 이 출력을 선택 사항으로 만들 수 있습니다. 오류 진단 수준을 지정합니다. 기본적으로 그대로 두지만 수정할 수 있습니다.

그리고 그것은 좋을 것입니다! 물론 전체 컨텍스트를 통해 오류를 찾을 수 있습니다! 또한 EA가 종료되기 전에 오류가 발생한 시점의 변수를 살펴봐야 합니다.

친애하는 레나트! 어쩌면 당신은 그것을 할 수 있습니까?