Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os pontos de rastreamento permitem que você registre informações na janela Saída sob condições configuráveis sem modificar ou parar seu código. Esse recurso é suportado para linguagens gerenciadas (C#, Visual Basic, F#) e código nativo, bem como linguagens como JavaScript e Python.
Observação
Para obter informações sobre como registrar informações na janela Saída programaticamente usando APIs .NET, consulte Enviar mensagens para a janela Saída.
Vamos dar um exemplo
O programa de exemplo a seguir é um loop simples for com uma variável de contador que aumenta um a cada vez que o loop executa outra iteração.
using System.Diagnostics;
namespace Tracepoints
{
public class Program
{
public static void Main(string[] args)
{
int counter = 0;
for (int i=0; i<=10; i++)
{
counter +=1;
}
}
}
}
Definir pontos de rastreamento no código-fonte
Você pode definir pontos de rastreamento especificando uma cadeia de caracteres de saída na caixa de seleção Ação na janela Configurações de ponto de interrupção .
Para inicializar um tracepoint, clique primeiro na calha à esquerda do número da linha onde você deseja definir o tracepoint.
Passe o cursor sobre o círculo vermelho e clique no ícone de engrenagem para abrir a janela Configurações do ponto de interrupção .
Marque a caixa de seleção Ação .
Observe como o círculo vermelho muda para um diamante, indicando que você mudou de um ponto de interrupção para um ponto de rastreamento.
Introduza a mensagem em que pretende iniciar sessão na caixa de texto Mostrar uma mensagem na Janela de Saída (para obter detalhes, consulte as secções posteriores deste artigo).
Seu ponto de rastreamento agora está definido. Pressione o botão "Fechar" se tudo o que você deseja fazer é registrar algumas informações na janela de saída.
Se desejar adicionar condições que determinem se sua mensagem será exibida, marque a caixa de seleção Condições .
Você tem três opções para condições: Expressão condicional, Filtro e Contagem de acertos.
Menu Ações
Este menu permite que você registre uma mensagem na janela Saída. Digite as cadeias de caracteres que você deseja enviar para a caixa de mensagem (sem aspas necessárias). Se você quiser exibir valores de variáveis, certifique-se de colocá-lo em chaves encaracoladas.
Por exemplo, se você quiser exibir o counter valor da variável no console de saída, digite {counter} na caixa de texto da mensagem.
Se você clicar em Fechar e, em seguida, depurar o programa (F5), você verá a seguinte saída na janela Saída.
Você também pode usar palavras-chave especiais para exibir informações mais específicas. Digite a palavra-chave exatamente como mostrado abaixo (use um "$" na frente de cada palavra-chave e todas as letras maiúsculas para a palavra-chave em si).
| Keyword | O que é exibido |
|---|---|
$ADDRESS |
Instrução atual |
$CALLER |
Chamando o nome da função |
$CALLSTACK |
Pilha de chamadas |
$FUNCTION |
Nome da função atual |
$PID |
ID do processo |
$PNAME |
Nome do processo |
$TID |
Identificador de Thread |
$TNAME |
Nome do thread |
$TICK |
Contagem de ticks (do Windows GetTickCount) |
Menu Condições
As condições permitem-lhe filtrar as mensagens de saída, para que sejam apresentadas apenas em determinados cenários. Existem três tipos principais de condições disponíveis para você.
Expressão condicional
Para uma expressão condicional, uma mensagem de saída é exibida somente quando determinadas condições são atendidas.
Para expressões condicionais, você pode definir o tracepoint para gerar uma mensagem quando uma determinada condição for verdadeira ou quando ela for alterada. Por exemplo, se você quiser exibir apenas o valor do contador durante as iterações pares do loop, você pode selecionar a opção for e, em seguida, digite a caixa de i%2 == 0 texto da mensagem.
Se desejar imprimir o valor do contador quando a iteração do loop for alterada, selecione a opção for e digite a caixa de i texto da mensagem.
O comportamento da opção Quando alterado é diferente para diferentes linguagens de programação.
- Para código nativo, o depurador não considera a primeira avaliação da condição como uma alteração, portanto, não atinge o ponto de rastreamento na primeira avaliação.
- Para código gerenciado, o depurador atinge o ponto de rastreamento na primeira avaliação depois que Quando alterado é selecionado.
Você também pode definir a condição quando o ponto de rastreamento pode ser habilitado inserindo um ponto de interrupção em qualquer seção específica do código e marcando a caixa de seleção Ativar somente quando o seguinte ponto de interrupção for atingido: opção no menu Configurações do ponto de interrupção . Você pode escolher qualquer ponto de interrupção na lista de opções.
Para obter uma visão mais abrangente das expressões válidas que você pode usar ao definir condições, consulte Expressões no depurador.
Obtenha assistência de IA
Se você tiver o Copilot, poderá obter assistência de IA enquanto cria um ponto de rastreamento. O Copilot oferece sugestões para pontos de interrupção condicionais e pontos de rastreamento específicos para seu código.
Para obter mais informações, consulte Depurar com Copilot.
Contagem de acertos
Uma condição de contagem de ocorrências permite que você envie a saída somente depois que a linha de código onde o tracepoint está definido tiver sido executada um número especificado de vezes.
Para contagem de acertos, você pode optar por gerar uma mensagem quando a linha de código onde o tracepoint está definido tiver sido executada um determinado número de vezes. Com base no requisito, ele pode ser igual a, ou é um múltiplo de, ou é maior ou igual ao valor de contagem de acertos especificado. Escolha a opção que melhor se adapta às suas necessidades e digite um valor inteiro no campo (por exemplo, 5) que representa essa iteração de interesse.
Você também pode remover o ponto de interrupção no primeiro acerto ativando a caixa de seleção Remover ponto de interrupção uma vez atingido.
Filter
Para uma condição de filtro, especifique para quais dispositivos, processos ou threads a saída é mostrada.
Lista de expressões de filtro:
-
MachineName= "nome" -
ProcessId= valor -
ProcessName= "nome" -
ThreadId= valor -
ThreadName= "nome"
Coloque cadeias de caracteres (como nomes) entre aspas duplas. Os valores podem ser inseridos sem aspas. Você pode combinar cláusulas usando & (AND), || (OR), ! (NOT), e parênteses.
Considerações
Enquanto os tracepoints se destinam a tornar a depuração uma experiência mais limpa e suave. Existem algumas considerações que você deve estar ciente quando se trata de usá-los.
Às vezes, quando você inspeciona uma propriedade ou atributo de um objeto, seu valor pode mudar. Se o valor for alterado durante a inspeção, não será um bug causado pelo recurso de tracepoint em si. No entanto, o uso de tracepoints para inspecionar objetos não evita essas modificações acidentais.
A maneira como as expressões são avaliadas na caixa de mensagem Ação pode ser diferente da linguagem que você está usando atualmente para desenvolvimento. Por exemplo, para gerar uma cadeia de caracteres, você não precisa quebrar uma mensagem entre aspas, mesmo que normalmente o faça ao usar Debug.WriteLine() ou console.log(). Além disso, a sintaxe de chave ({ }) para expressões de saída também pode ser diferente da convenção para valores de saída em sua linguagem de desenvolvimento. (No entanto, o conteúdo dentro das chaves ({ }) ainda deve ser escrito usando a sintaxe da sua linguagem de desenvolvimento).
Se você estiver tentando depurar um aplicativo ativo e procurando um recurso semelhante, confira nosso recurso de ponto de log no Depurador de instantâneo. O depurador de instantâneo é uma ferramenta usada para investigar problemas em aplicativos de produção. Os pontos de log também permitem que você envie mensagens para a janela de saída sem ter que modificar o código-fonte e não afetam seu aplicativo em execução. Para obter mais informações, consulte Depurar aplicativo do Azure ao vivo.