Pergunta

Eu sou muito tempo Delphi dev e no passado eu usar uma ferramenta de terceiros para registro e depuração durante o desenvolvimento (chamado Smart Inspecionar) no entanto, agora que eu tiver atualizado para o Delphi XE e eu quero tentar usar o IDE para depuração.

A minha pergunta é, dada uma função como

procedure MyFunction;
var
    str : string;
begin
    str := 'Foo';
    //Debug, show value of str?
    str := AnotherFunction(str);
    //Debug, show value of str?
end;

como posso depurar e obter o valor de str, sem fazer coisas estúpidas como mostramensagem(str);

se há um vídeo em algum lugar (ou artigo), então eu estou mais do que feliz em ler.

Há um modo de ver/saída o valor de variáveis.

Foi útil?

Solução

Bem, Delphi XE vem com página de códigos de registo, mas eu tenho a sensação de que você está falando sobre o depurador próprio.

Se você colocar um ponto de interrupção em uma rotina, ele vai quebrar o depurador quando ele bate.A partir daí, você tem um Local de Variáveis de painel e um Relógios do painel, no lado esquerdo do IDE.Variáveis locais irá mostrar o valor de todos os moradores, e os Relógios permite definir expressões cujo valor vai manter o controle de.

Você também pode obter algo semelhante a um relógio, mas com informações mais detalhadas (especialmente para tipos estruturados, tais como objetos) usando Inspecionar (Alt-F5).Além disso, o Evaluate/Modify (Ctrl-F7) irá permitir que você digite expressões e avaliá-los.Não é tão detalhado como Inspecionar, mas dá muito mais flexibilidade.

Se você se familiarizar com estas ferramentas, você vai encontrar a depuração muito mais fácil.

Outras dicas

Se você quiser usar apenas o depurador IDE, faça o seguinte:

  • Coloque um ponto de interrupção em algum lugar
  • Clique com o botão direito do mouse no círculo de quebra e escolha "Propriedades do ponto de interrupção ..."
  • Pressione o botão "Avançado" para mostrar mais opções
  • Desmarque a caixa de seleção "quebra"
  • Em seguida, use caixas de edição "Log Message" e "Eval Expression" para inserir valores de rastreamento

Essas mensagens serão enviadas para o painel depurador "log de eventos". Clique com o botão direito do mouse no painel e escolha "Propriedades". Lá você pode filtrar ("Mensagens") / Hilight ("Colors") as mensagens de rastreamento enquanto você vive.

1) Você pode usar a função de saída de saída para a janela String de saída para depurar

2) Você pode usar o Codesite Express. Eu recomendo o vídeo de Coderagem 5 Como ponto de partida para usar o código

Outras respostas estão todas corretas.

Minha técnica favorita pessoal (o mesmo que a resposta de Da-Soft) é criar um ponto de interrupção, que registra uma mensagem no log de eventos, contendo um valor que eu quero registrar, e na verdade não "quebra" (isto é, a execução continua sem você acertar o ícone de corrida). Toda vez que essa linha de código é atingida, recebo minha mensagem e meus valores no log. Como posso voltar e ler a história, além de ver os valores atuais, acho isso mais útil do que apenas usar a janela do relógio depurador.

Mas como o Delphi Xe inclui o código, você pode ir muito além do que a avaliação de expressão nos pontos de interrupção faz para você. O site de código, no entanto, exige que você modifique seu código para adicionar algum registro. Mas é muito melhor do que uma caixa de mensagem.

Você também pode usar o outputDebugString (PCHar (s)) para produzir qualquer string para o depurador. Como isso pode conter o que você quiser, é uma maneira muito boa de depurar, mas não mostrar coisas para o usuário final.

Em muitas das minhas aplicações, tenho um buffer de rastreamento especial, que é circular (ou seja, mantém apenas os últimos 500 linhas). Sempre que vejo um problema, não apenas recebo um rastreamento de pilha, também economizo esse log de rastreamento na memória, por isso tenho algum histórico sobre o que estava acontecendo pouco antes do meu problema.

Você também pode conferir o Log 4 Delphi projeto.

Eu prefiro dicas de depurador. Depois de invadir o depurador, mova o mouse para o "STR" em qualquer lugar do seu código e você verá seu valor atual. Além disso, você pode destacar alguma declaração de um mouse e avaliá -la. Por exemplo, destaque "outra função (str)" e coloque seu mouse sobre ele.

Nada de errado com nenhuma das outras respostas, mas eu só queria adicionar essas funções úteis.

procedure DebugString ( const s : string ) ; overload ;
begin
  {$IFDEF DEBUG}
  OutputDebugString ( PChar ( s ) ) ;
  {$ENDIF}
end ;

procedure DebugString ( const s : string ; args : array of const ) ; overload ;
begin
  {$IFDEF DEBUG}
  OutputDebugString ( PChar ( Format ( s , args ) ) ) ;
  {$ENDIF}
end ;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top