• Nenhum resultado encontrado

Depurando Aplicações ASP.NET

No documento Linguagem de Programação II (páginas 37-44)

Quando você desenvolve aplicações, você pode encontrar diversos tipos diferentes de erros. Antes de solucioná-los você tem que identificar o tipo de erro e tratá-lo

apropriadamente.

Existem 3 tipos de erros que você tem que lidar ao desenvolver um aplicativo: erro de sintaxe, erros de runtime, e erros de semântica.

Erros de Sintaxe (Syntax Errors)

Os erros de sintaxe precisam ser solucionados para que o compilador possa compilar a aplicação. Eles se referem a estrutura e as regras associadas aos comandos da linguagem e aplicação. Por exemplo, se você tentar utilizar o seguinte comando:

if( this.isPostBack) {

// bloco de instruções }

E esquecer de fechar o par de parênteses ( ) ou chaves { }, um erro de sintaxe ocorre. O Visual Studio alerta você sobre esses erros indicando no código enquanto você desenvolve.

Erros em tempo de execução (runtime)

São erros que ocorrem quando a aplicação está sendo executada. São também conhecidos como exceções. Por exemplo, se uma aplicação espera que um

determinado arquivo esteja disponível em algum servidor de uma rede, mas ele não é encontrado pela aplicação, será gerado um erro em tempo de execução (exception). Esse tipo de erro deve ser gerenciado pela própria aplicação.

Erros de Semântica

São erros mais difíceis de localizar pois sua aplicação irá executar e não será emitido nenhuma notificação. Mesmo assim, sua aplicação não executa a tarefa esperada. Por exemplo, seu programa exibe um formulário de entrada com os dados de um cliente e são salvos sem erro nenhum. Mas ao visualizar novamente a informação, alguns dados não aparecem corretamente ou não foi salvo. Isso significa que a semântica da aplicação não está correta.

38

A Classe Debug

A classe Debug oferece métodos e propriedades que podem ajudar você a depurar seu código exibindo informaçõese verificando seu código com declarações no código. Usando a classe Debug, você tem a garantia de um código robusto sem afetar a performance e tamanho do código do seu produto na release final. Isso por que os códigos de depuração da classe não são compilados com o programa na versão Release da aplicação. A classe Debug é disponível globalmente na aplicação importando o namespace System.Diagnostics. Não há necessidade de instanciar a classe, ela não tem construtores, e você não pode herdar a mesma pois é do tipo sealed.

Métodos da Classe Debug

Método Descrição

Debug.Write Escreve a string que você determinar, ou

escreve a saída de um método ToString de um objeto .

Debug.WriteLine Escreve uma linha de texto de sua escolha, ou escreve a saída do método toString de um Objeto.

Debug.WriteIf Para escrever uma string

condicionalmente.

Debug.Print Para gerar a saída de uma linha de texto

formatado.

Debug.Assert Para exibir uma mensagem se uma

determinada condição for falsa.

Habilitando a Depuração

Você deve habilitar a depuração caso você deseje depurar a sua aplicação. Isso é feito no arquivo web.config. Dentro do mesmo você precisa localizar o elemento compilation e alterar o atributo debug para true.

<configuration> <system.web> <compilation debug="true"> ... </system.web> <configuration>

Adicionando BreakPoints

O Visual Studio nos fornece o recurso de BreakPoints, que são nada mais do que pontos de parada da execução de uma aplicação.

Você pode colocar ou remover em qualquer ponto do seu código C# um Break Point pressionando a tecla F9, ou a partir do menu Debug > Toggle Breakpoint, ou ainda sobre a linha de código clicando o botão direito opção Breakpoint. Ou ainda, clicando sobre a bolinha vermelha que marca o Break Point.

39

Executando a Aplicação em Modo de Depuração

Para executar sua aplicação em modo de debug, você deve pressionar F5 ou clicar em Start Debugging no menu Debug. Se a depuração não estiver habilitada, você será perguntado se quer habilitar o modo de depuração pela caixa de diálogo abaixo. Basta clicar em Ok para habilitar a depuração. Isso irá modificar o arquivo web.config.

Execução Passo a Passo

Quando o depurador encontra uma linha com um breakpoint, a execução é suspensa. Você pode então executar sua aplicação passo a passo e examinar a lógica de sua aplicação.

Pressione F10 ou clique em Step Over no menu Debug, se você quer que a linha atual seja executada sem entrar no código da instrução que está sendo executada, como um método na mesma classe ou em uma classe externa. A execução irá parar na próxima linha de código.

Pressione F11 ou clique na opção Step Into do menu Debug se você quiser entrar no código da instrução da linha atual, se houver algum. Por default, propriedades são normalmente não usam esse tipo de execução por não conter código sobre elas.

40

Usando a Janela de Depuração

O Depurador do Visual Studio oferece diversas janelas, coletivamente conhecidas como variable windows que exibem informações sobre as variáveis enquanto você está depurando. Cada janela tem uma grid de três colunas: Name, Value e Type. A coluna nome mostra os nomes das variáveis adicionadas automaticamente nas janelas Auto e Locals.

Na janela Watch, a coluna Name é onde você adiciona suas próprias variáveis ou expressões. As colunas Value e Type exibem o valor e o tipo de variável ou resultado correspondente. Você pode editar o valor da variável na coluna Value.

Exibindo a Janela Window

No menu Debug, selecione Windows e então o nome da janela que você quer abrir. Você pode escolher Autos, Locals, Watch ou Watch1 até Watch4. Para exibir esses itens, o depurador deve estar sendo executado ou no modo break.

Depuração Remota

Para você executar depuração remota, você deve usar o programa Remote

Debugging Monitor ou msvsmon.exe, que é uma aplicação à qual o Visual Studio se conecta.

Por default, o Remote Debugging Monitor roda como uma aplicação Windows, você pode configurá-lo para rodar como serviço caso queira que ele seja executado em um servidor remoto. Você pode executar o assistente a partir do menu Start, pasta Tools. Depois de iniciar o depurador remoto, você deve configurar os ambientes em ambas as máquinas. Você também deve levar em consideração, as questões de seguranças relacionadas ao acesso remoto.

Tracing

Tracing é o processo de receber informação sobre a execução da aplicação em tempo de execução. É uma maneira de monitorar a sua aplicação. Essa informação pode lhe auxiliar a identificar problemas ou analisar performance, de uma maneira que não afeta a aplicação.Tracing normalmente é utilizado em ambiente de produção em que não é possível executar depuração.

Você pode utilizar o tracing para:

 Ter um diagnóstico das informações de uma requisição a uma página ASP.NET

41

 Descobrir o código no qual a sua aplicação percorreu.

Classe TraceContext

É a classe usada para escrever mensagens em uma página ou no trace log em memória.

Métodos da Classe TraceContext:

 Write : escreve uma mensagem de trace no log

 Warn : similar ao método Write, porém as mensagens aparecem em vermelho. Ambos os métodos possuem 3 overloads, todos os 3 possuem uma mensagem de tracing, e adicionalmente um nome de categoria, e um parâmetro to tipo Exception que indica que você pode informar um erro capturado ou uma exceção definida pelo usuário.

Exemplo:

Trace.Warn("Atenção");

Trace.Write("Mensagem de Trace");

Trace.Write("Categoria", "Mensagem de Trace");

Trace.Write("Categoria", "Mensagem de Trace", new Exception("mensagem da exceção"));

Saída:

O parâmetro trace permite você classificar a saída do Trace por categoria alterando o código:

<%@ Page ... Trace="True" TraceMode="SortByCategory" %>

Alternativamente você também pode utilizar SortByTime.

Você pode utilizar a propriedade IsEnable do TraceContext para alterar o estado do tracing dinamicamente ou verificar seu estado:

// habilitando o tracing no código Trace.isEnabled = true;

42

if (Trace.IsEnabled) {

Trace.Write("Tracing está habilitado!"); }

Habilitando o Tracing em uma Aplicação Web

Você pode utilizar o seguinte código para ativar o Tracing a nível de página:

<%@ Page Language="C#" Trace="true" ... %>

Ou a nível de aplicação, alterando o arquivo web.config:

<configuration> ... <system.web> <trace enabled=”true” /> ... </system.web> </configuration>

Dados do Trace

As informações do trace a nível de página são adicionadas ao final da página .aspx em que estiver habilitado.

Categorias do Trace

Os dados do Trace são divididos em diversas categorias conforme listado:

Categoria Descrição

Request Details Informação sobre a requisição: identificação da sessão (ID), tempo da requisição, tipo de requisição, e status. Trace Information Saídas padrão e customizadas de trace. A coluna From

First(s) contem o tempo total desde a execução até o trace acontecer, e a coluna From Last(s) mostra o tempo restante.

Os tempos aqui são importantes para se ter um perfil e para identificar os métodos que mais demoram para responder.

Control Tree Lista de todos os itens que estão na página, junto com o tamanho de cada uma.

É uma representação da ASP.NET Control Tree. Mostra cada controle, seu ID único, tipo, números de

43

bytes que utiliza para ser renderizado, e o número de bytes que ocupa na ViewState e ControlState. Session State Informação sobre os valores armazenados na sessão

(Session), se houver algum.

Application State Informação sobre os valores armazenados na Application, se houver algum.

Headers Collection Lista de requisição e header de resposta.

Form Collection Lista de controles e seus valores, do formulário que foi enviado.

Querystring Collection Lista de valores passados na URL.

44

Unidade 8

No documento Linguagem de Programação II (páginas 37-44)

Documentos relacionados