Partilhar via


Usando a Janela de Inspeção – WinDbg (Clássico)

A janela Inspeção exibe informações sobre variáveis globais, variáveis locais e registros. Você pode personalizar essa janela para mostrar os itens que você está rastreando.

Abrindo a janela Inspeção

Para abrir ou alternar para a janela Inspeção, na janela WinDbg, no menu Exibir , clique em Assistir.

Você também pode pressionar ALT+2 ou clicar no botão Inspeção (ALT+2) na barra de ferramentas: Captura de tela do botão Inspeção na barra de ferramentas.

ALT+SHIFT+2 fechará a janela Inspeção.

A captura de tela a seguir mostra um exemplo de uma janela Inspeção.

Captura de tela de uma janela de inspeção de exemplo no WinDbg.

A janela Inspeção pode conter quatro colunas. As colunas Nome e Valor são sempre exibidas e as colunas Tipo e Localização são opcionais. Para exibir as colunas Tipo e Localização , clique nos botões Typecast e Locations , respectivamente, na barra de ferramentas.

Na janela Inspeção, você pode fazer o seguinte:

  • Para adicionar uma variável à janela Inspeção, selecione a primeira célula vazia na coluna Nome , digite o nome da variável e pressione ENTER. Separe o nome do módulo da variável com um ponto de exclamação (!). Se você não especificar um módulo, o módulo atual será usado. Para inserir um endereço no campo Nome , o endereço deve começar com um dígito decimal (se necessário, use o prefixo 0x).

    Se o nome da variável que você inseriu for definido no escopo da função atual, seu valor aparecerá na coluna Valor . Se não estiver definida, a coluna Valorexibirá "Erro: Não é possível obter valor".

    Mesmo que uma variável não esteja definida, pode ser útil adicioná-la à janela Inspeção. Se o contador do programa inserir uma função na qual uma variável desse nome é definida, seu valor aparecerá na janela nesse momento.

  • Para remover uma variável da janela Inspeção, clique duas vezes em seu nome, pressione DELETE e pressione ENTER. Você também pode substituir um nome antigo por um novo nome clicando duas vezes no nome antigo, digitando o novo nome e pressionando ENTER.

  • Se uma variável for uma estrutura de dados, uma caixa de marcar será exibida ao lado de seu nome. Para expandir e recolher a exibição de membros da estrutura, selecione ou desmarque a caixa marcar.

  • Inteiros do tipo int são exibidos como valores decimais; inteiros do tipo UINT são exibidos no radix atual. Para alterar o radix atual, use o comando n (Definir Base numérica) na janela Comando do Depurador.

  • Para alterar o valor de uma variável local, clique duas vezes em sua célula Valor . Insira o novo valor ou edite o valor antigo. (Os comandos recortar, copiar e colar estão disponíveis para uso para edição.) O valor inserido pode incluir qualquer expressão C++. Depois de inserir um novo valor ou editar o valor antigo, você poderá pressionar ENTER para armazenar o novo valor ou pressionar ESC para descartá-lo. Se você enviar um valor inválido, o valor antigo reaparecerá depois que você pressionar ENTER.

    Inteiros do tipo int são exibidos como valores decimais; inteiros do tipo UINT são exibidos no radix atual. Para alterar o radix atual, use o comando n (Definir Base numérica) na janela Comando do Depurador.

  • A coluna Tipo (se for exibida na janela Inspeção) mostra o tipo de dados atual de cada variável. Cada variável é exibida no formato adequado para seu próprio tipo de dados. As estruturas de dados têm seus nomes de tipo na coluna Tipo . Outros tipos de variáveis exibem "Inserir novo tipo" nesta coluna.

    Se você clicar duas vezes em "Inserir novo tipo", poderá converter o tipo inserindo um novo tipo de dados. Essa conversão altera a exibição atual dessa variável somente na janela Inspeção; ele não altera nada no depurador ou no computador de destino. Além disso, se você inserir um novo valor na coluna Valor , o texto inserido será analisado com base no tipo real do símbolo, em vez de qualquer novo tipo que você possa ter inserido na coluna Tipo . Se você fechar e reabrir a janela Inspeção, perderá as alterações do tipo de dados.

    Você também pode inserir um comando de extensão na coluna Tipo . O depurador passará o endereço do símbolo para essa extensão e exibirá a saída resultante em uma série de linhas recolhidas abaixo da linha atual. Por exemplo, se o símbolo nessa linha for um endereço válido para um bloco de ambiente de thread, você poderá inserir !teb na coluna Tipo para executar a extensão !teb no endereço desse símbolo.

  • A coluna Localização (se ela for exibida na janela Inspeção) mostra o deslocamento de cada membro de uma estrutura de dados.

  • Além das variáveis, você também pode monitorar os seguintes itens na janela Inspeção:

    • Registros. Ao adicionar um registro à janela Inspeção, prefixe seu nome com um sinal de sinal (@). Ao contrário das variáveis, você não pode alterar valores de registro por meio da janela Inspeção.
    • Vtables que contêm ponteiros de função. Quando uma Vtable aparece na janela Inspeção, você pode procurar as entradas de função na tabela. Se uma Vtable estiver contida em uma classe base que aponte para uma implementação derivada, a notação _vtcast_Class será exibida para indicar os membros que estão sendo adicionados devido à classe derivada. Esses membros se expandem como o tipo de classe derivada.
    • Os valores retornados das funções de extensão, como _EFN_GetPoolData.

Ao contrário da janela Locais, a janela Inspeção não é afetada por alterações no contexto de registro. Na janela Inspeção, você pode ver e modificar somente as variáveis definidas no escopo do contador do programa atual.

Se você abrir um novo workspace, o conteúdo da janela Inspeção será descartado e substituído por aqueles no novo workspace.

Barra de ferramentas e menu de atalho

A janela Inspeção tem uma barra de ferramentas que contém dois botões (Typecast e Locations) e um menu de atalho com comandos adicionais. Para acessar o menu, clique com o botão direito do mouse na barra de título da janela ou clique no ícone próximo ao canto superior direito da janela: Captura de tela do ícone do botão para acessar o menu de atalho da barra de ferramentas da janela Inspeção.

A barra de ferramentas e o menu contêm os seguintes botões e comandos:

  • (Barra de ferramentas e menu) O Typecast ativa e desativa a exibição da coluna Tipo .

  • (Barra de ferramentas e menu) Os locais ativam e desativam a exibição da coluna Localização .

  • (Somente menu) Exiba valores de 16 bits enquanto Unicode exibe cadeias de caracteres Unicode nesta janela. Esse comando ativa e desativa uma configuração global que afeta a janela Locais, a janela Inspeção e a saída do comando do depurador. Esse comando é equivalente ao uso do comando .enable_unicode (Habilitar Exibição Unicode).

  • (Somente menu) Sempre exibir números no radix padrão faz com que inteiros sejam exibidos no radix padrão em vez de sempre exibi-los em formato decimal. Esse comando ativa e desativa uma configuração global que afeta a janela Locais, a janela Inspeção e a saída do comando do depurador. Esse comando é equivalente a usar o comando .force_radix_output (Usar Radix para Inteiros).

    Nota O comando Sempre exibir números no radix padrão não afeta inteiros longos. Inteiros longos são exibidos em formato decimal, a menos que o comando .enable_long_status (Habilitar Exibição de Inteiro Longo) seja usado. O comando .enable_long_status afeta a exibição na janela Locais, na janela Inspeção e na saída do comando do depurador. Não há equivalente para esse comando no menu na janela Inspeção.

  • (Somente menu) A janela Abrir memória para o valor selecionado abre uma nova janela Memória encaixada que exibe memória começando no endereço da expressão selecionada.

  • (Somente menu) Invoke dt for selected memory value runs the dt (Display Type) command with the selected symbol as its parameter. O resultado aparece na janela Comando do Depurador. A opção -n é usada automaticamente para diferenciar o símbolo de um endereço hexadecimal. Nenhuma outra opção é usada. Observe que o conteúdo produzido usando essa seleção de menu é idêntico ao conteúdo produzido ao executar o comando dt da linha de comando, mas o formato é ligeiramente diferente.

  • (Somente menu) A barra de ferramentas ativa e desativa a barra de ferramentas.

  • (Somente menu) Encaixar ou Desencaixar faz com que a janela entre ou deixe o estado encaixado.

  • (Somente menu) Mover para o novo encaixe fecha a janela Inspeção e a abre em um novo encaixe.

  • (Somente menu) Definir como destino de encaixe de tabulação para o tipo de janela não está disponível para a janela Inspeção. Essa opção só está disponível para janelas de origem ou memória .

  • (Somente menu) Sempre flutuante faz com que a janela permaneça desencaixada mesmo se ela for arrastada para um local de encaixe.

  • (Somente menu) Mover com quadro faz com que a janela se mova quando o quadro WinDbg é movido, mesmo que a janela esteja desencaixada.

  • (Somente menu) A Ajuda abre este tópico na documentação Ferramentas de Depuração para Windows.

  • (Somente menu) Fecha essa janela.

Confira também

Para obter mais informações sobre como controlar variáveis e uma descrição de outros comandos relacionados à memória, consulte Leitura e gravação de memória. Para obter mais informações sobre registros e sua manipulação, consulte Exibindo e editando registros no WinDbg (clássico).