그 자체로는 나쁘지 않습니다. 하지만
1. 디버깅할 때 큰 도움이 되는 어설션(어설션)에 대한 언급이 없습니다.
2. 트레이서는 논란의 여지가 있습니다.
3. 최적화(컴파일러) 때문에 인라이닝으로 인해 간단한 함수에 대한 디버깅이 매우 어렵다는 점을 언급하고 이 단점을 해결할 수 있는 방법을 제안합니다.
그러나 여기에 쓰여진 내용은 근본적으로 잘못되었습니다:
Хочу отдельно отметить, что компилятор MetaEditor транслирует программы в байт-код, а не нативный код (подробнее читаем по ссылке). Это дает возможность создавать защищенные шифрованием программы, не боясь взлома. Также преимуществом такой трансляции является то, что байт-код может быть запущен как в 32-х битной версии операционной системы, так и в 64-х битной.
컴파일의 첫 번째 단계에서는 범용 바이트코드가 저장되지만 터미널에서 실행될 때 이 바이트코드는 추가 최적화를 통해 네이티브 32비트 또는 64비트 코드로 완전히 100% 변환됩니다. 네이티브 코드로의 번역 덕분에 MQL4에 비해 MQL5 프로그램의 실행 속도가 몇 배로 빨라졌습니다.
네이티브 코드로 번역되지 않은 순수 바이트코드는 MQL4에 있었습니다.
디버거에서 인라이닝은 완전히 비활성화되어 있으며, 워크스루는 소스 코드 그대로 진행됩니다.
언제부터 이렇게 된 건가요? 예전에는 큰 문제였어요. 5k에서 일한 지 꽤 오래됐거든요.
처음부터요.
인라이닝은 대부분의 함수를 먹어치우기 때문에 이론적으로도 디버깅이 전혀 불가능합니다. 아마도 많은 문제가 있었던 디버거의 첫 번째 버전으로 작업했을 수도 있습니다.
위드 종료 중 또는 시장과 연결되지 않은 상태에서 디버깅을 하려면 어떻게 해야 하나요? 해결책이 있나요? 디버거로 "OnTick"이후에 문제가 있기 때문에 MT4에는 MT5에 이와 같은 "틱 생성기"가 있습니까?
미리 감사드립니다,
MT4 업그레이드가 완료되는 대로 디버거를 개선할 예정입니다.
새로운 기고글 MQL5 프로그램 디버깅 가 게재되었습니다:
이 글은 주로 언어를 이미 배웠지만 아직 프로그램 개발을 완전히 마스터하지 못한 프로그래머를 대상으로 합니다. 그것은 몇 가지 디버깅 기술을 보여주고 저자와 다른 많은 프로그래머의 결합된 경험을 보여줍니다.
코드 프로파일러는 디버거에 중요한 추가 기능입니다. 실제로 이것은 최적화로 구성된 프로그램 디버깅의 마지막 단계입니다.
프로파일러는 "프로파일링 시작" 버튼을 클릭하여 MetaEditor 5 메뉴에서 호출됩니다. 디버거에서 제공하는 단계별 프로그램 분석 대신 프로파일러가 프로그램을 실행합니다. 프로그램이 지표 또는 Expert Advisor인 경우 프로파일러는 프로그램이 언로드될 때까지 작동합니다. 언로드는 차트에서 지표 또는 Expert Advisor를 제거하고 "프로파일링 중지"를 클릭하여 수행할 수 있습니다.
프로파일링은 각 함수가 호출된 횟수, 실행에 소요된 시간 등 중요한 통계를 제공합니다. 아마도 백분율 용어의 통계에 약간 혼란스러워 할 것입니다. 통계는 중첩 함수를 고려하지 않는다는 점을 이해해야 합니다. 따라서 모든 백분율 값의 합은 100%를 크게 초과합니다.
그러나 그 사실에도 불구하고 프로파일러는 사용자가 속도를 위해 최적화해야 하는 기능과 메모리를 절약할 수 있는 포지션을 볼 수 있도록 하는 프로그램 최적화를 위한 강력한 도구로 여전히 남아 있습니다.
작성자: Nikolay Demko