Histórico da Página
...
Com isso em mente já podemos para observar que quem realmente faz a depuração é o servidor, o TDS apenas exibirá as informações retornadas pelo servidor.
A segunda coisa, é que o TDS é construído em cima da plataforma Eclipse e utiliza o framework de depuração dela para que as informações sejam apresentadas na tela.
Vamos conhecer o fluxo de execução de uma depuração com o TDS.
(Em relação aos processos do servidor, podemos apenas deduzir o que ocorre, portanto as informações aqui referentes a ele são apenas superficiais):
1 - O usuário conecta-se a um servidor (O qual pode ser local ou remoto)
...
10.9 - Agora com as informações apresentadas, o TDS fica aguardando o usuário informar qual o próximo passo. Eles podem ser:
10.9.1 - Step Over (F6): Essa opção fará com que o servidor execute a linha corrente, parando na próxima do mesmo fonte. Ou seja, a linha possua a execução de uma função qualquer, todo código dessa função será executado e apenas quando ela retornar o servidor fará a parada.
10.9.2 - Step Into (F5): Ao contrário da opção anterior, caso a linha seja uma chamada de uma função, o servidor irá entrar na mesma e informar a parada na primeira linha dessa função.
10.9.3 - Step Return (F7): Retorna de uma função que foi entrada via Step Into.
10.9.4 - Run To Line (Ctrl+R): Essa opção possui a mesma funcionalidade de um ponto de parada, porém sem a necessidade de criá-lo. O usuário coloca o cursor na linha onde espera que a próxima parada aconteça e aciona essa opção. Na prática, o TDS informa para o servidor que foi criado um ponto de parada naquela linha e manda executar. Quando o servidor retornar para o TDS, este faz todo o processo da parada e remove o ponto de parada da linha.
19.9.5 - Resume (F8): Faz com que a execução continue até que outro ponto de parada seja encontrado ou o programa finalize.
...
Observando apenas o fluxo de execuções, já é possível deduzir algumas boas práticas para que uma depuração seja realizada. Ao longo do tempo, a equipe de desenvolvimento da ferramenta identificou também alguns comportamentos dos usuários que não ajudam o processo como um todo.
A seguir vamos falar um pouco sobre recomendações, boas práticas, o que fazer e o que não fazer, e o que devemos esperar de algumas situações.
1 - Ambiente de depuração:
1.1 - Recomendamos fortemente que a depuração seja feita em ambiente local
...
1.4 - Garanta que a máquina que está rodando o TDS tenha memória disponível e o processador não esteja em uso pesado. Faça o mesmo para a máquina onde está localizado o servidor (Caso seja um servidor remoto).
2 - Parâmetro -A:
No executor do TDS, existe um campo onde é possível informar parâmetros para o programa a ser executado (-A).
...
Como pode notar, é um problema na função e não existe nada que o TDS possa fazer para contornar.
3 - Procura de fontes:
Como você observou no fluxo, quando o servidor informa ao TDS uma parada, este irá buscar os fontes apenas nos projetos informados na aba "Source Lookup/Origem" do executor.
...
Note que as ações do item 2.3 possuem um grande impacto na performance da depuração.
4 - Ações de execução:
As açõespodem ser: Step Into/Avançar para, Step Over/Ultrapassar, Step Return/Retroceder, Run/Continuar, Termiante/Encerrar.
...
Por exemplo, suponha a seguinte situação hipotética:
- Na linha corrente exista a função: calculeFatura() e nessa função possua um ponto de entrada onde você deve fazer a soma dos itens e retornar para o processo.
- Porém, antes do ponto em que seu fonte é chamado, essa função seleciona uma série de tabelas e executa 2500 linhas.
- O servidor irá fazer um Step Into em cada uma das 2500 linhas executadas (Mandando informação para o TDS em cada uma delas, onde o TDS fará o processo de parada até que o fonte não seja encontrado), e se em uma delas existir outras funções, essas também serão acessadas antes de chegar no seu fonte.
...