Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 12 de Setembro de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
150 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Delphi Debug Information
Publicado por rboaro : Quarta, Maio 09, 2012 - 02:12 GMT-3 (777 leituras)
Comentários 4 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Elazar A opção de projeto Debug Information pode habilitar ou desabilitar a geração de informações de depuração para um projeto Delphi, isto significa que quando um build do projeto for realizado o compilador irá criar um relacionamento entre o codigo executado e o seu respectivo codigo fonte. Para modificar esta opção (habilitar/desabilitar) a geração de Debug Information existe duas vias: No project options | Delphi Compiler | Compiling | Debugging | Debug Information ou através da diretiva de compilação {$D+} ou {$D-} (+ para ativar e – para desativar) ou {$DEBUGINFO ON} e {$DEBUGINFO OFF}. Imagem abaixo mostra as opções de um projeto, no qual está desabilitada a opção.



Lembre que um projeto só pode ser depurado se esta opção estiver habilitada (True ou D+) antes da aplicação ser executada. Existe um modo bem simples de saber qual a situação da opção, basta verificar apos a compilação a existência de marcas azuis no inicio das linhas do código fonte. Fonte sem o recurso de informação de depuração:



Fonte com o recurso de informação de depuração:



Sempre apos mudar a opções de projeto (vale para todas), entre um valor e outro (true para false ou vice versa) deve ser feito um Build para reconstruir todas as units (dcu) e a alteração surgir efeito. É notável nas duas ultimas imagens o uso de uma diretiva {$IFOPT D+} que será explicada em breve. Também do mesmo modo é notável que no próprio help do Delphi existe um comentário referente ao uso de memória, velocidade e tamanho do executável gerado em ambos os casos no qual diz que no caso do recurso estiver habilitado para gerar informação, terá maior consumo de memoria do compilador (dcu maior?), não existirá alterações no tamanho do executável e na velocidade de execução do mesmo.



Realizando o teste da opção, percebe-se que o detalhe do tamanho do executável não ocorreu exatamente como menciona o Help (este pequeno teste foi realizado pelo simples fato que desde muitos anos é indicado desabilitar esta opção antes de distribuir o aplicativo no qual o principal objetivo era justamente diminuir o tamanho do executável), de forma geral o help está correto uma vez que existem outras opções que tambem influenciam o resultado. Como pode ser acompanhado nas próximas imagens.


Arquivos e executável com o recurso de depuração, .dcu com 5.096 bytes... apos build.


Arquivos e executavel sem o recurso de depuração, .dcu com 4.626 bytes... apos build.

Logico que para o caso acima a diferença é desprezível, mas não para mostrar de forma suficiente que diferenças existem.

Diretiva de debug e IFOPT

De forma bem simples e resumida, permite verificar se o aplicativo foi compilado utilizando informações de depuração, assim como é possível utilizar para verificar tambem outras diretivas. Se uma aplicação precisar saber sobre informações de depuração quanto estiver rodando (D+) pode ser usado a diretiva $IFOPT para executar um código especifico para esta situação, tal qual como o uso da diretiva $IFDEF. A grande jogada deste caso é que a aplicação pode conter codigos especificos (executar codigos especificos) apenas em versões de testes por motivos obvios claro. No exemplo abaixo o conteúdo do mmTest (TMemo) receberá um valor adicional e salvará o seu conteúdo em disco apenas no caso do aplicativo ser compilado em "modo debug".

procedure TfPrincipal.btTestClick(Sender: TObject);
begin
mmTest.Lines.Add('Linha 1');
mmTest.Lines.Add('Linha 2');
mmTest.Lines.Add('Linha 3');
mmTest.Lines.Add('Linha 4');
mmTest.Lines.Add('Linha 5');
mmTest.Lines.Add('Linha 6');

{$IFOPT D+}
mmTest.Lines.Add('Linha 7');
mmTest.Lines.SaveToFile('diretivadebug.txt');
{$ENDIF}
end;

procedure TfPrincipal.FormCreate(Sender: TObject);
begin
{$IFOPT D+}
MessageDLG('Aplicativo está complidado no modo DEGUG, faça o build no modo Release', mtInformation, [mbOk], 0);
{$ENDIF}
end;

A utilização de IFOPT vai depender apenas de sua imaginação, como visto acima a ideia foi simular a depuração de uma query (quem nunca precisou salvar uma query criada em tempo de execução).

Elazar Dornelles Ceza
elazar.dev@gmail.com



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: jeffersomlima (jeffersomfinhodohomem@hotmail.com) : Mai 09, 2012 - 09:51
(Informações sobre o membro | Enviar uma mensagem) http://
Bacana Vou tentar ..


por: EliomarOffice (eliomar0910@gmail.com) : Mai 11, 2012 - 12:14
(Informações sobre o membro | Enviar uma mensagem)
A diferença do seu exe no seu teste ficou muito pequena pq tem poucos pas / dcu, tenho uma aplicação que em debug fica com 130MB se estiver em release fica em 62MB, isso é de fato uma grande diferença.


por: jffonseca (joao@treinacon.com.br) : Mai 13, 2012 - 11:13
(Informações sobre o membro | Enviar uma mensagem) http://http://
Parabéns Elazar! E seja bem vindo.
Precisamos muito destas e outras dicas importantes sobre o ambiente de compilação, principalmente sobre as novas versões do Delphi.
É fundamelmental conhecermos as técnicas de programação, mas as opções do compilador também podem fazer a diferença no resultado de uma aplicação.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados