---
title: "Depurando código - Desenvolvimento de programas - Ajuda para o MetaEditor"
description: "O MetaEditor possui um depurador integrado, isto é, uma ferramenta que permite testar o programa em etapas (por funções... - Depurando código - Desenvolvimento de programas - Ajuda para o MetaEditor"
image: "https://www.metatrader5.com/i/logo_metatrader5.png"
url: "https://www.metatrader5.com/pt/metaeditor/help/development/debug"
---

[Ajuda para o MetaEditor](https://www.metatrader5.com/pt/metaeditor/help) → [Desenvolvimento de programas](https://www.metatrader5.com/pt/metaeditor/help/development) → Depurando código

# Depurando código

O MetaEditor possui um depurador integrado, isto é, uma ferramenta que permite testar o programa em etapas (por funções individuais). Você coloca pontos de interrupção no código do programa, quer dizer, locais onde a execução do programa deve ser suspensa. Em seguida, execute o programa num gráfico convencional ou no [testador de estratégias](https://www.metatrader5.com/pt/metaeditor/help/development/debug#history). Assim que a execução do programa atingir o ponto de interrupção, ele será suspenso. Você pode ver os valores das variáveis ​​avaliadas e, em seguida, continuar a execução do programa manualmente por etapas, verificando o algoritmo de operação.

- [Configuração preliminar](https://www.metatrader5.com/pt/metaeditor/help/development/debug#settings)
- [Pontos de interrupção](https://www.metatrader5.com/pt/metaeditor/help/development/debug#breakpoint)
- [Execução da depuração](https://www.metatrader5.com/pt/metaeditor/help/development/debug#start)
- [Expressões monitoradas](https://www.metatrader5.com/pt/metaeditor/help/development/debug#watch)
- [Visualização da pilha de chamadas](https://www.metatrader5.com/pt/metaeditor/help/development/debug#stack)
- [Depuração passo a passo](https://www.metatrader5.com/pt/metaeditor/help/development/debug#step)
- [Interromper, retomar e concluir a depuração](https://www.metatrader5.com/pt/metaeditor/help/development/debug#stop)
- [Depuração no histórico](https://www.metatrader5.com/pt/metaeditor/help/development/debug#history)

## Configuração preliminar [#](#settings)

Antes da depuração, defina seus parâmetros gerais nas [opções do MetaEditor](https://www.metatrader5.com/pt/metaeditor/help/beginning/settings#debug). Você pode especificar o símbolo e o período do gráfico nos quais ocorrerá a depuração dos aplicativos. Esse gráfico será criado temporariamente toda vez que você iniciar a depuração e será excluído imediatamente após sua conclusão.

> Ao gráfico criado para depuração é aplicado o modelo "debug.tpl", localizado na pasta /profiles/templates da plataforma de negociação.

## Pontos de interrupção [#](#breakpoint)

Ponto de interrupção – este comando é acionado quando a execução do programa passa para a linha especificada e interrompe sua execução neste momento. Os pontos de interrupção permitem que você examine o comportamento do programa na área especificada do código: visualizar os valores das variáveis, a pilha de funções. No futuro, o processo de depuração pode ser retomado ou finalizado.

Pelo menos um ponto de interrupção no código do programa deve ser definido antes de iniciar a depuração. Para fazer isso, clique duas vezes na caixa cinza à esquerda da linha de código. Além disso, você pode colocar o cursor na linha e pressionar "![Alternar ponto de interrupção](https://www.metatrader5.com/i/help/metaeditor/en/breakpoint_icon.png) Alternar ponto de interrupção" no menu ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_debug#breakpoint) ou "F9". Os pontos de interrupção são desligados da mesma maneira.

![Ponto de interrupção ativado](https://www.metatrader5.com/i/help/metaeditor/en/debug_breakpoint.png)

Para pular rapidamente para o ponto em que a execução do programa é interrompida, clique duas vezes na função na janela de exibição de pilha de chamadas. Além disso, através do menu de contexto desta janela, você pode ir para a lista de todos os pontos de interrupção no programa que está sendo depurado:

![Ir para o ponto de interrupção](https://www.metatrader5.com/i/help/metaeditor/en/breakpoint_goto.png)

Você também pode ir a qualquer um dos pontos clicando duas vezes nele.

## Execução da depuração [#](#start)

Para iniciar a depuração, abra o arquivo do [arquivo básico do programa](https://www.metatrader5.com/pt/metaeditor/help/structure#main_file) ou [projeto](https://www.metatrader5.com/pt/metaeditor/help/mql5storage/projects). A depuração pode ser feita de dois modos:

- Em dados reais. Com o comando "![Iniciar em dados reais](https://www.metatrader5.com/i/help/metaeditor/en/start_debug_icon.png) Começar com dados reais" no menu ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_debug#start) ou com a tecla "F5". Neste modo, o programa depurado é executado num [gráfico especial](https://www.metatrader5.com/pt/metaeditor/help/development/debug#settings) na plataforma de negociação. A depuração é realizada em condições reais nos dados de preço provenientes do servidor.
- Nos dados históricos. Com o comando "![Iniciar em dados históricos](https://www.metatrader5.com/i/help/metaeditor/en/start_debug_history_icon.png) Começar com dados históricos" no menu ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_debug#start) ou as teclas "Ctrl + F5". Nesse modo, o programa é iniciado no testador de estratégia. Permite verificar o funcionamento de qualquer parte do histórico, sem esperar o aparecimento de determinadas condições de mercado. Por padrão, o modo de teste não visual é usado para não desperdiçar recursos na renderização de elementos gráficos. Se necessário, você pode ativar o modo visual nas [configurações do MetaEditor](https://www.metatrader5.com/pt/metaeditor/help/beginning/settings#debug).

Assim que o programa no modo de depuração atingir a linha com um ponto de interrupção, ele será interrompido. A linha na qual a execução parou será marcada com um ícone ![Ponto de interrupção ativado](https://www.metatrader5.com/i/help/metaeditor/en/breakpoint_triggered_icon.png). Também na janela "Caixa de Ferramentas", aparecerá a guia ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/workspace/toolbox#debug). Na parte esquerda, será mostrada a [pilha de chamadas](https://www.metatrader5.com/pt/metaeditor/help/development/debug#stack) da função.

![Ativação do ponto de interrupção após o início da depuração](https://www.metatrader5.com/i/help/metaeditor/en/debug_start.png)

## Expressões monitoradas [#](#watch)

Durante o processo de depuração, você pode monitorar os valores das várias expressões (variáveis) que são recebidas no estágio atual de execução do programa. Para este propósito é projetado o lado direito da guia ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/workspace/toolbox#debug) da janela "Caixa de Ferramentas". Para rastrear os valores de uma expressão, adicione-a a expressões monitoradas:

- Durante a depuração, coloque o cursor na expressão no código fonte e clique em "![Adicionar observação](https://www.metatrader5.com/i/help/metaeditor/en/add_watch_icon.png) Adicionar observação" no menu de contexto.
- Clique em "![Adicionar uma nova entrada](https://www.metatrader5.com/i/help/metaeditor/en/add_watch_icon.png) Adicionar" no menu de contexto do lado direito da guia "Depurar". Em seguida, insira o nome da expressão na linha exibida.
- Para alterar o nome da expressão monitorada, clique duas vezes nela.

![Exibir pilha e valores de expressões](https://www.metatrader5.com/i/help/metaeditor/en/debug_watch.png)

Você pode também permitir a visualização automática das variáveis locais na lista de monitoramento. Para fazer isso, selecione a opção "Locais" no menu de contexto. Durante a depuração, as variáveis do escopo atual serão automaticamente exibidas na lista à medida que você navega pelo código.

Na janela de monitoramento de expressões, você pode realizar cálculos matemáticos simples (adição, subtração, multiplicação e divisão), bem como visualizar valores em pontos específicos da matriz. Por exemplo, especificando a entrada A[3][4], onde A é o nome da matriz, enquanto 3 e 4 são posições em suas dimensões. Ao adicionar objetos às expressões monitoradas, você pode mostrar a lista de seus membros especificando no final um ponto ou pressionando as teclas "Ctrl+Space":

![Substituição de membros de objetos](https://www.metatrader5.com/i/help/metaeditor/en/debug_watch_autocomplete.png)

Para visualizar o conteúdo de um array ou objeto, clique duas vezes nele na janela de observação.

Por padrão, os números inteiros são exibidos na janela de monitoramento em formato decimal. Para gerar o valor em formato binário ou hexadecimal, no campo "Expressão", especifique um modificador b ou x, respectivamente, após a vírgula.

![Visualização de expressões em formato binário e hexadecimal](https://www.metatrader5.com/i/help/metaeditor/en/debug_watch_binary_hex.png)

## Visualização da pilha de chamadas [#](#stack)

A pilha de chamadas é preenchida com informações para retornar o controle de subrotinas (funções aninhadas) para o programa (o manipulador de eventos principal de OnInit, OnTick, etc.). Na pilha, você pode olhar todo o caminho desde a ocorrência do [evento na plataforma de negociação](https://www.mql5.com/pt/docs/runtime/event_fire) antes de chamar uma função específica.

Para cada função, as seguintes informações são exibidas:

- O nome do arquivo do qual a função foi chamada.
- O nome da função.
- O número da linha no arquivo onde esta função foi chamada.

Depuração passo a passo

Para depuração passo a passo com a visualização da pilha de chamadas, use os comandos do menu ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_debug) ou barra de ferramentas ["Padrão"](https://www.metatrader5.com/pt/metaeditor/help/toolbar/toolbar_standard):

- ![Entrar](https://www.metatrader5.com/i/help/metaeditor/en/step_into_icon.png)Entrar – passa uma etapa de execução do programa com entrada nas funções que podem ser invocadas. A mesma ação é executada pressionando a tecla "F11".
- ![Passar por cima](https://www.metatrader5.com/i/help/metaeditor/en/step_over_icon.png)Passar por cima – passa uma etapa de execução do programa sem entrar nas funções que podem ser invocadas. A mesma ação é executada com a tecla "F10".
- ![Sair](https://www.metatrader5.com/i/help/metaeditor/en/step_out_icon.png)Sair – pula para a execução de uma etapa do programa, um nível acima. A mesma ação é executada com as teclas "Shift+F11".

Os comandos de depuração passo a passo só podem ser usados ​​depois que o programa é interrompido no modo de depuração:

- Depois que o ponto de interrupção é ativado.
- Após pausar o programa manualmente com o comando "![Suspender](https://www.metatrader5.com/i/help/metaeditor/en/break_debug_icon.png) Suspender" no menu ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_debug#break) ou a tecla "Break".

> Chegada de [eventos na plataforma de negociação](https://www.mql5.com/pt/docs/runtime/event_fire)continua mesmo quando o programa está no ponto de interrupção. Todos os eventos que chegam são enfileirados e seu processamento pelo expert continuará depois que o código do manipulador de eventos atual for encerrado.

## Interromper, retomar e concluir a depuração [#](#stop)

A pausa do programa durante a depuração ocorre automaticamente assim que atinge a linha onde definido o ponto de interrupção. Além disso, a depuração pode ser controlada manualmente:

- Suspender execuçãoA execução do programa durante o processo de depuração pode ser interrompida manualmente com o comando "![Suspender](https://www.metatrader5.com/i/help/metaeditor/en/break_debug_icon.png) Suspender" no menu ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_debug#break) ou com a tecla "Break". Após a execução ser pausada, você pode usar os comandos de depuração passo a passo.
- Retomar a execuçãoPara retomar a execução do programa após a interrupção, clique em "![Retomar](https://www.metatrader5.com/i/help/metaeditor/en/start_debug_icon.png) Retomar" no menu ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_debug#start) ou "F5".
- Encerrar depuraçãoA fim de parar a depuração do programa, clique em "![Encerrar](https://www.metatrader5.com/i/help/metaeditor/en/stop_debug_icon.png) Encerrar" no menu ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_debug#stop) ou "Shift+F5". O programa será removido do [gráfico especial](https://www.metatrader5.com/pt/metaeditor/help/development/debug#settings), no qual foi iniciado para depuração, e o gráfico em si será fechado.

> Sem os arquivos de origem MQ4, MQ5 e MQH, a depuração não é possível.Também não é recomendado distribuir arquivos executáveis ​​EX4/EX5 recebidos durante o processo de depuração.

## Depuração no histórico [#](#history)

A depuração de robôs de negociação e indicadores técnicos pode ser executada não apenas em dados de preços - que são atualizados em tempo real - mas também em dados históricos. O trabalho do programa pode ser verificado na parte desejada do histórico, sem esperar por determinados eventos comerciais em tempo real.

A depuração em dados históricos ocorre no modo de teste visual, no testador de estratégias. O programa é executado no gráfico construído segundo a sequência de ticks modelada no testador ou a partir do histórico acumulado de ticks (recebidos da corretora).

Para executar a depuração no histórico, defina os parâmetros de execução do teste nas [opções do MetaEditor](https://www.metatrader5.com/pt/metaeditor/help/beginning/settings#debug).

![Configuração de depuração no histórico](https://www.metatrader5.com/i/help/metaeditor/en/debug_history_settings.png)

Coloque os pontos de interrupção no código do programa e, em seguida, execute a depuração em dados históricos.

![Execução da depuração no histórico](https://www.metatrader5.com/i/help/metaeditor/en/debug_history_run.png)

Após isso, será executado o teste visual e começará o processo de depuração.

![Depuração no histórico](https://www.metatrader5.com/i/help/metaeditor/en/debug_history_running.png)

## In this section

- [Controle inteligente](https://www.metatrader5.com/pt/metaeditor/help/development/intelligent_management)
- [Procurar e Substituir](https://www.metatrader5.com/pt/metaeditor/help/development/source_code_find)
- [Estilizador](https://www.metatrader5.com/pt/metaeditor/help/development/styler)
- [Compilar](https://www.metatrader5.com/pt/metaeditor/help/development/compile)
- [Proteção adicional de programa (MQL5 Protector)](https://www.metatrader5.com/pt/metaeditor/help/development/mql5_cloud_protector)
- Depurando código
- [Criação de perfil de código](https://www.metatrader5.com/pt/metaeditor/help/development/profiling)
- [Ajuda do AI Assistant ao escrever código](https://www.metatrader5.com/pt/metaeditor/help/development/ai_assistant)
- [Gerando código de inclusão](https://www.metatrader5.com/pt/metaeditor/help/development/generate_mqh)
- [Trabalhando com DLL C++ (integração com MS Visual Studio)](https://www.metatrader5.com/pt/metaeditor/help/development/c_dll)
- [Trabalho com Python](https://www.metatrader5.com/pt/metaeditor/help/development/python)
- [Suporte a OpenCL](https://www.metatrader5.com/pt/metaeditor/help/development/opencl)

```json
{"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ {"@type": "ListItem", "position": 1, "item": {"@id": "https://www.metatrader5.com/pt/metaeditor/help", "name": "Ajuda para o MetaEditor"}}, {"@type": "ListItem", "position": 2, "item": {"@id": "https://www.metatrader5.com/pt/metaeditor/help/development", "name": "Desenvolvimento de programas"}}, {"@type": "ListItem", "position": 3, "item": {"@id": "https://www.metatrader5.com/pt/metaeditor/help/development/debug", "name": "Depurando código"}} ]}
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "MetaTrader 5: Depurando código", "acceptedAnswer": { "@type": "Answer", "text": "O MetaEditor possui um depurador integrado, isto é, uma ferramenta que permite testar o programa em etapas (por funções..." } }] }
```
