Discussão do artigo "Depuração dos programas do MQL5"

 

Novo artigo Depuração dos programas do MQL5 foi publicado:

Este artigo é destinado principalmente aos programadores que já tenham aprendido a linguagem, mas ainda não tenham dominado completamente o desenvolvimento do programa. Ele revela algumas técnicas de depuração e apresenta uma experiência combinada do autor e muitos outros programadores.

Autor: Nikolay Demko

 

Não é ruim, por si só. Mas.

1. Nem uma palavra sobreasserções (asserções), que são de grande ajuda na depuração.

2. o rastreador é controverso, para dizer o mínimo.

3. deveria ser mencionado que, devido à otimização (do compilador), a depuração se torna muito difícil para funções simples por causa do inlining e sugerir maneiras de contornar essa desvantagem.

 
TheXpert:

Não é ruim, por si só. Mas.

1. Nem uma palavra sobre asserções (asserções), que são de grande ajuda na depuração.

2. o rastreador é controverso, para dizer o mínimo.

3. deveria ser mencionado que, devido à otimização (compilador), a depuração é muito difícil para funções simples devido ao inlining e sugerir maneiras de contornar essa desvantagem.

Vou pensar em 1 e 3 (talvez eu até finalize o artigo), todos têm seus próprios métodos, mas sugiro o rastreamento (ou melhor, apenas insira links, já houve muitas sugestões).
 
TheXpert:

3. é necessário mencionar que, devido à otimização (compilador), a depuração é muito difícil para funções simples por causa do inlining e sugerir maneiras de contornar essa desvantagem.

No depurador, o inlining está completamente desativado e o passo a passo é feito completamente pelo código-fonte.

No criador de perfil das últimas compilações, houve um problema com o ponto de verificação, o que reduziu a qualidade dos relatórios, mas isso foi corrigido e, na próxima compilação, na próxima semana, uma nova versão com relatórios mais detalhados estará disponível.

 

Mas o que está escrito aqui está fundamentalmente errado:

Хочу отдельно отметить, что компилятор MetaEditor транслирует программы в байт-код, а не нативный код (подробнее читаем по ссылке). Это дает возможность создавать защищенные шифрованием программы, не боясь взлома. Также преимуществом такой трансляции является то, что байт-код может быть запущен как в 32-х битной версии операционной системы, так и в 64-х битной.

No primeiro estágio da compilação, um bytecode universal é armazenado, mas quando executado no terminal, esse bytecode é totalmente 100% traduzido em código nativo de 32 ou 64 bits com otimização adicional. É devido à tradução em código nativo que multiplicamos a velocidade de execução dos programas MQL5 em comparação com a MQL4.

O bytecode puro sem tradução em código nativo estava em MQL4.

 
Renat:

No depurador, o inlining está completamente desativado e o passo a passo está completamente no código-fonte como está.

Há quanto tempo é assim? Costumava ser um grande problema. Já faz um bom tempo que não trabalho com o 5ka.
 
TheXpert:
Há quanto tempo está assim? Costumava ser um grande problema. Já faz um bom tempo que não trabalho com 5k.

Desde o início.

O inlining consome a maioria das funções e seria impossível depurar com ele, mesmo teoricamente. Talvez você tenha trabalhado apenas com as primeiras versões do depurador, onde havia vários problemas.

 

E para a depuração durante a fase de eliminação de ervas daninhas ou sem conexão com o mercado? Você tem uma solução? Porque há um problema após o "OnTick" com o depurador, no MT4 há um"Tick generator", algo assim no MT5?

Desde já, obrigado,

 
Bisemper:

E para a depuração durante a fase de eliminação de ervas daninhas ou sem conexão com o mercado? Você tem uma solução? Porque há um problema após o "OnTick" com o depurador, no MT4 há um "Tick generator", algo assim no MT5?

Desde já, obrigado,

Podemos fazer uma associação sobre isso;-)
 

Praticamente não uso otaldka em tempo real por causa do longo processo de chegada das cotações e da seção de gráfico necessária.

Tenho que empurrar o Print da maneira antiga e monitorá-lo no testador.

Ainda assim, o depurador local não decola antes do Visual Studio. Você aponta para uma variável e ela lhe dá um valor, aponta para uma expressão como a+b /s e o resultado aparece. No ME, é mais fácil usar o Print.

 

Com certeza melhoraremos o depurador assim que concluirmos a atualização do MT4.