Notas de versão
Este tópico fornece informações sobre o que há de novo no WinDbg. Versões anteriores foram lançadas como WinDbg Preview.
1.2502.25002.0
Novas funcionalidades
Janela de comando IntelliSense
O prompt de entrada de comando mostrará automaticamente as conclusões sugeridas quando o primeiro caractere digitado for .
(ponto), !
(bang) ou $
(cifrão).
As sugestões também podem ser invocadas com o atalho de comando Ctrl + Space
Depuração de instantâneos
Enquanto a depuração de processos em tempo real localmente, o depurador pode tirar instantâneos do processo e alternar entre os instantâneos e o processo em tempo real por meio de ícones na guia "Extensões". Além disso, o depurador pode anexar-se a um instantâneo de um processo sem suspendê-lo por meio de uma cadeia de caracteres de protocolo snapshot:pid=<process pid in hex>
em "Conectar ao depurador remoto".
Novas APIs de modelo de dados
Debugger.Utility.Symbols.GetTypeInformation
Ele retornará as informações de tipo associadas a qualquer objeto passado. Há um argumento opcional que permite a desreferenciação automática (um nível) de ponteiros se você realmente quiser o tipo abaixo de qualquer ponteiro (ou ref).
Debugger.Utility.Control.CreateStepFilter(<Type>, <Pattern>)
Cria um novo filtro de etapa. Encontra-se neste namespace, adjacente a todas as APIs de criação de breakpoints.
Debugger.State.StepFilters
Retorna a lista de filtros de etapa com as propriedades Id, Description, Type, Pattern e IsEnabled. Há um método .Remove() em objetos de filtro de etapa.
Experiência de depuração CLR melhorada sem clrcomposition.dll
O componente redistribuível dbgeng.dll
agora tem suporte melhorado para percorrer a pilha para quadros CLR sem a necessidade de clrcomposition.dll
estar presente.
Melhorias aleatórias
- Suporte atualizado para depuração do kernel Linux (especialmente para versões 6.11 e posteriores)
- Suporte para páginas KDUMP comprimidas com ZSTD
Correções de bugs
- Atualize o SOS para a versão 9.0.557512.
- Foi corrigida uma regressão de desempenho na verificação de assinaturas revogadas ao carregar msdia140.dll.
- Corrigida uma falha ao ler o contexto XSTATE.
- Corrigido o realce de ponto de interrupção desativado na janela de desmontagem para diferenciar do ponto de interrupção ativado
- Corrigida uma falha ao fechar uma janela de ferramentas flutuante
- Corrigido um problema em que, às vezes, a posição atual da janela Linhas Temporais não era preenchida após abrir um rastreamento recente.
- Corrigido um problema nas janelas Desmontagem e Memória, que às vezes não eram atualizadas depois de inserir um novo valor.
- Esquema de cores da barra de título fixo no tema escuro.
- Apresentação fixa de pontos de interrupção adiados na janela Pontos de interrupção, onde Localização mostraria 0x0 em vez da expressão original inserida quando foi criada. Além disso, tem um ícone distinto indicando que não está vinculado.
- Corrigido um problema em Locais/Observação em que clicar com o botão direito do mouse em um item visível fazia com que a exibição rolasse para cima.
- Problemas corrigidos com o natvis, veja o relato de erro original em .
- Corrigido o spam do depurador kd com a mensagem
Error getting port connector information
, veja o relatório de erro original. - Foi corrigido um problema em que o
gc
acionava pontos de interrupção condicionais quando a condição era falsa. - Os registos YMM e ZMM agora são visíveis ao depurar um rastreamento TTD.
Correções de acessibilidade
- Navegação de teclado melhorada para as janelas Locals, Watch e Breakpoints.
- Legibilidade visual melhorada das janelas Friso, Locais, Observação e Pontos de interrupção.
- Melhor usabilidade do leitor de tela das janelas Locals, Watch e Breakpoints
- A edição de itens em Variáveis Locais, Vigia e Pontos de Paragem manterá, quando possível, o foco de teclado, a seleção e a rolagem anteriores.
- Suporte geral melhorado para o Windows Text Scaling
Melhorias gerais na interface do usuário
- Adicionado um comando para alternar o foco entre a caixa de texto de entrada do comando e o painel de saída, tal como no modo de alternância do prompt de comando. O atalho é
Ctrl + M
- Adicionado o item "Ir para Desmontagem" ao menu de contexto na janela de Pontos de Interrupção.
- Adicionado menu de contexto à janela de Desmontagem para Executar até à Instrução, Definir Ponteiro de Instrução, Ir para Origem, Alternar Ponto de Interrupção, Alternar Estado de Ponto de Interrupção
Depuração de viagem no tempo (TTD)
- Atualizado para a versão 1.11.481.
- Consulte Notas de versão do TTD
1.2410.11001.0
Quebrando a mudança
- dbghelp.dll vincula-se dinamicamente a msdia140.dll. Isso deve afetar apenas as ferramentas que redistribuem dbghelp.dll sem incluir também msdia140.dll. Observe que msdia140.dll está incluído nos pacotes nuget que incluem dbghelp.dll.
Correções de bugs
- Corrigido o problema em que os aliases de função da galeria de extensões não estavam associados aos gatilhos de carregamento.
- Não eliminar o repositório de símbolos quando o erro ERROR_INTERNET_SECURITY_CHANNEL for recebido.
- Corrigido o problema em que uma barra invertida não podia ser digitada na janela de comando para layouts de teclado diferentes do inglês.
- Corrigido o problema em que a caixa de texto de edição nas janelas de Pontos de Interrupção, Locais e Monitorização não deslizava até ao cursor quando o texto é mais longo do que a coluna em que está hospedado.
- Para despejos CAB ou ZIP, priorize *.dmp (período único) sobre *.*.dmp (períodos duplos)
Correções de acessibilidade
- O redimensionamento da coluna através do teclado foi corrigido para as janelas Watch/Locals.
- Navegação de teclado melhorada em todo o WinDbgX.
1.2409.17001.0
Correções de acessibilidade
Corrigimos vários problemas ao interagir com o WinDbg usando um leitor de tela.
Correções de bugs
- Corrigido o problema em que a desinstalação do WinDbgX impedia o lançamento do WinDbg clássico.
- Corrigido o problema em que o WinDbgX era redimensionado depois de aparecer durante a inicialização.
Depuração de viagem no tempo (TTD)
1.2407.24003.0
Novas funcionalidades
Novo provedor de scripts JavaScript
Estamos agora a lançar um novo fornecedor de JavaScript retrocompatível baseado em V8. Como resultado disso, os hosts arm64 agora podem usar extensões JavaScript. A interface de utilizador arm64 também agora tem o mecanismo arm64 como padrão.
O novo provedor é habilitado por padrão em todas as arquiteturas.
Em x86 e x64, pode ser ligado/desligado através dos comandos .veighton
e .veightoff
.
Em algum momento no futuro, esses comandos e o provedor JavaScript herdado serão removidos.
Extensibilidade da interface do usuário por meio da galeria de extensões e do modelo de dados
As extensões do depurador com manifestos da galeria de extensões agora podem adicionar ícones à nova guia Extensões da faixa de opções do WinDbg. Clicar nesses ícones acionará uma visualização de uma determinada consulta de modelo de dados. Esta forma de extensibilidade é realizada adicionando visualizações ao manifesto da galeria de extensão. Uma vista liga um nome e um ícone a uma consulta do modelo de dados e ao tipo de vista. A documentação pode ser encontrada em Extension Gallery Manifest Documentation
Parâmetros de exceção adicionados ao gatilho de carga de exceção da Galeria de Extensões
Uma extensão de galeria agora pode ser carregada condicionalmente com base em valores de parâmetros de exceção específicos. Consulte a documentação do Manifesto da Galeria de Extensões em para obter mais detalhes.
Opção de configuração para nunca baixar símbolos específicos
Agora você pode ignorar o download de símbolos para imagens especificadas.
Na seção Symbols
do arquivo de configuração do DbgX.xml
, você pode adicionar uma lista de símbolos:
<Namespace Name="DisabledSymbolsDownload">
<Setting Name="MSEdge.dll" Type="VT_BSTR" Value=""></Setting>
</Namespace>
No depurador, você pode executar dx Debugger.Settings.Symbols.DisabledSymbolsDownload
para exibir a lista atual de símbolos que não estão sendo baixados.
Você também pode alterar a lista diretamente do depurador assim:
dx @$curprocess.Modules[1].DisableSymbolDownload()
dx @$curprocess.Modules[1].EnableSymbolDownload()
Novo comando para exibir informações do SourceLink
Para ajudar na resolução de problemas de depuração com o download de fontes de código com base no SourceLink incorporado, pode agora usar o comando !lmsourcesinfo module
para exibir o conteúdo do SourceLink que o depurador irá utilizar.
Melhorias gerais na interface do usuário
Fizemos algumas pequenas melhorias no Windows, como a janela de módulos ou a janela de pilha:
- Agora você pode classificar as exibições de grade clicando na coluna de cabeçalho.
- Há mais ações de clique com o botão direito do mouse disponíveis.
- A janela de stack exibe os frames como embutidos quando apropriado.
Correções de bugs
- Foi corrigido um problema em que PDBs maiores que 4 GB não eram baixados por HTTP.
- Edge é um exemplo de tal PDB.
- Corrigido o problema de cache no provedor de credenciais do depurador (agora ele armazenará em cache as credenciais por site).
- Foram corrigidos bugs durante a avaliação dos gatilhos de carga da Galeria de Extensões.
- Corrigiu-se um erro com
!address
que poderia causar um crash. -
!heap -a -a
deve funcionar agora.
TTD
Consulte as Notas de Versão do TTD para a versão 1.11.410.
1.2402.24001.0
Novos recursos
Depuração ao vivo de Linux
Agora pode fazer a depuração em tempo real de um processo Linux. Para obter mais informações, consulte estes tópicos:
Depuração de processos remotos ao vivo do Linux
O cliente WinDbg para o futuro previsível ainda exigirá Windows, como WinDbg não é executado no Linux.
Gravar um subconjunto de execução com a depuração com retrocesso no tempo
Agora você pode especificar uma lista de módulos para gravar para focar o TTD nos módulos que lhe interessam. Isso pode reduzir substancialmente a sobrecarga de gravação. Para usar isso, basta marcar "Gravar subconjunto de execução" na caixa de diálogo "Configurar e gravar" e, em seguida, especificar o(s) módulo(s) que deseja gravar. (veja abaixo os problemas conhecidos ).
Para um controle mais preciso, você pode gravar com precisão seu programa usando uma nova API de gravação em processo. Veja como com o nosso código de exemplo e documentação .
Janela de registo compacta
A nova janela de registro se parece com a saída do comando r
. Observe que a edição a partir da nova janela de registro ainda não é suportada.
Novos parâmetros para e
(Enter Values) em comandos de memória
Os comandos e
(Enter Values) into memory agora suportam endereços físicos, assim como os comandos d
(Display Memory). Observe que essas opções só são suportadas no modo kernel:
Opção | Descrição |
---|---|
/p |
Usa endereços de memória física para a exibição. O intervalo especificado por Range será retirado da memória física em vez da memória virtual. |
/p[c] |
O mesmo que /p , exceto que a memória em cache será lida. Os parênteses em torno de c devem ser incluídos. |
/p[uc] |
O mesmo que /p , exceto que a memória não armazenada em cache será lida. Os parênteses em torno de uc devem ser incluídos. |
/p[wc] |
O mesmo que /p , exceto que a memória combinada de gravação será lida. Os parênteses em torno de WC devem ser incluídos. |
Para obter mais informações, consulte e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (Enter Values).
Correções de bugs
- Suporte para desofuscação de nomes Rust na depuração do Linux
- Melhorias na depuração CLR
- Adicione a capacidade de forçar quadros CLR de caminhada de pilha de modo misto
- Adicionada
ForceMixedModeStackWalker
configuração adicionada aoconfig.xml
ouDbgX.xml
. - Foi adicionado o comando
!forceclrmixedmodeunwind
para investigações pontuais ou se não for possível alterar a configuração.
- Adicionada
- Adicione a capacidade de forçar quadros CLR de caminhada de pilha de modo misto
- Melhorias gerais nas capacidades de depuração CLR no Linux
- Corrija uma série de problemas com respeito às variáveis LinuxKernel.js e por CPU
- Adicionado o comando
!runq
ao LinuxKernel.js para poder despejar as filas de execução do agendador do kernel por-CPU (semelhante na forma ao comandorunq
do utilitário crash do Linux) - Corrigidos vários comandos em LinuxKernel.js para corresponder às mudanças do kernel: em kernels mais recentes, a árvore de temporizadores usa nós RB armazenados em cache em vez de nós RB brutos; Em kernels mais recentes, a lista de all_bdevs desapareceu, então os dispositivos de bloco agora são retirados do superbloco em vez disso (blockdev_superblock)
- Adicionado o comando
- Várias correções do natvis para funcionarem de maneira mais semelhante às versões recentes do Visual Studio.
- Prefira o sourcelink em vez de o sourceinfo herdado
- Adicionado o comando
!lmsourcesinfo <module>
para exibir fluxos sourcelink do pdb (para ajudar nos problemas de depuração com sourcelink).
- Adicionado o comando
Problemas conhecidos
Ao especificar uma lista de módulos para gravar com TTD, especificar mais de um módulo não funciona nesta versão.
1.2308.2002.0
Muitas correções de bugs e pequenas melhorias.
1.2306.12001.0
Muitas correções de bugs e pequenas melhorias.
1.2303.30001.0
Observação
O depurador foi renomeado de WinDbg Preview para WinDbg.
O depurador herdado lançado com Ferramentas de Depuração para Windows será referenciado como WinDbg (clássico).
Depuração de viagem no tempo no ARM64
Não só o WinDbg é executado nativamente em ARM64, como também ativámos a Depuração de Viagem no Tempo (TTD) para processos ARM64 nativos. Agora você pode gravar processos ARM64 nativos (e processos x86 e ARM32) e depurá-los facilmente, mesmo em sua máquina x64. O suporte para processos compatíveis com x64 ou ARM64EC em dispositivos ARM64 ainda não está disponível.
O desempenho geral do TTD também foi melhorado, com a sobrecarga de gravação substancialmente reduzida para processos que usam instruções SIMD comuns. No total, 65 novas instruções foram otimizadas, variando de MMX a SSE 4.2, AVX e AVX2.
Resolução de Pontos de Interrupção Ambíguos
Pontos de interrupção ambíguos permitem que o depurador defina pontos de interrupção em determinados cenários em que uma expressão de ponto de interrupção é resolvida em vários locais. Para obter mais informações, consulte Resolução de ponto de interrupção ambíguo.
1.2107.13001.0
Pesquisa Regex
A pesquisa WinDbg Preview agora inclui a opção de pesquisar usando expressões regulares - Regex. Habilite o Regex na janela que você deseja pesquisar fazendo Ctrl+F e, em seguida, alterne o botão rotulado .*
ao lado da caixa de pesquisa.
Modo restrito
O Modo Restrito é uma configuração opcional que pode limitar o tipo de sessões de depuração que o WinDbg Preview pode iniciar para sessões de depuração remotas e despejar somente arquivos. Para obter mais informações, consulte WinDbg - Modo restrito.
Suporte a variáveis sombreadas
Em versões anteriores, WinDbg lança erros de "símbolo ambíguo" ao tentar avaliar (??) ou exibir (dx) uma variável que compartilha seu nome com outra variável no escopo. O Windbg agora desambiguará variáveis que compartilham o mesmo nome, anexando @n
ao nome da variável. Por exemplo: foo@0
, foo@1
Essa alteração também será refletida na janela Locais. Anteriormente, apenas a variável mais próxima no escopo era exibida.
1.2104.13002.0
Seleção e pesquisa de números inteligentes
Um recurso de produtividade conveniente do WinDbg Preview é a capacidade de detetar padrões na janela de comando. Para fazer isso, selecione qualquer texto e todas as outras ocorrências desse texto realçadas. Como esse realce é útil quando se olha para padrões de memória, ele agora também destacará números equivalentes em outras radixes, não importa como o número é formatado em notação hexadecimal, decimal ou científica. Para obter mais informações sobre esquemas de numeração, consulte n (Definir Base Numérica).
Exemplo:
Ao selecionar 0x000001e2fb3f6160
, todas as outras instâncias são realçadas, independentemente do formato.
Este recurso também funciona com realces semi-temporários. Ctrl + Clique duas vezes em um número para destacar todas as suas instâncias. Você pode acompanhar vários números importantes ao longo do seu histórico de comandos desta forma (para limpar o destaque, Ctrl + Clique duas vezes no número novamente). Por fim, esse recurso também funciona ao pesquisar números com Ctrl + F.
Acesso Estendido ao Código-Fonte
O comando caminho de origem .srcpath, .lsrcpath (definir caminho de origem) foi atualizado para incluir uma nova tag – DebugInfoD. Para obter mais informações, consulte Acesso Estendido ao Código-Fonte.
Estados de host e convidado de processos WOW no modelo de dados
Agora, ao depurar um processo WOW de 32 bits a partir de um contexto de 64 bits, os utilizadores podem acessar os estados do anfitrião e do convidado no modelo de dados.
Exemplos de estado de convidado de 32 bits:
dx @$curprocess.Environment
dx @$curthread.Environment
dx @$curthread.Stack
Exemplos de estado de host de 64 bits:
dx @$curprocess.NativeEnvironment
dx @$curthread.NativeEnvironment
dx @$curthread.NativeStack
Melhorias na depuração de JavaScript
O JavaScript carregado na interface do usuário agora pode ser depurado diretamente no console usando o comando .scriptdebug. Para obter mais informações, consulte JavaScript Debugger Scripting - JavaScript Debugging.
Melhorias de acessibilidade
Com o WinDbg Preview, estamos comprometidos em construir um depurador que seja inclusivo para engenheiros com deficiência, estamos continuamente melhorando a acessibilidade. Foram introduzidas as seguintes melhorias:
- Os links da janela de comando agora podem ser clicados através do teclado (Shift+Enter)
- Navegação melhorada do menu principal pelo teclado
- Navegação melhorada do friso pelo teclado
- Maior contraste nos elementos da interface do usuário
Novo tipo de acesso a dados "Overwrite" para o Depurador de Viagem no Tempo
O Depurador de Viagem no Tempo (TTD) agora fornece um tipo de acesso a dados denominado "substituir". Consultas de memória como dx @$cursession.TTD.Memory()
agora têm uma coluna adicional mostrando os valores antigos de gravações.
Outras correções, melhorias e atualizações
- Recurso adicionado para detetar e aplicar automaticamente solução alternativa para problemas de hardware USB 3.1 quando o host e o destino de depuração do kernel são controladores USB 3.1.
- Adicionado um novo atalho de interface do usuário: Ctrl + Shift + Clique sobre um link DML irá copiá-lo para a área de transferência
1.0.2007.01003
Favoritos da Linha do Tempo
Marque posições importantes do Time Travel no WinDbg, em vez de copiar e colar manualmente a posição no bloco de notas. Os marcadores facilitam a visualização rápida de diferentes posições no rastreio em relação a outros eventos e a sua anotação.
Você pode fornecer um nome descritivo para os favoritos.
Aceda aos Favoritos através da janela Linha Cronológica disponível em Ver > Linha Cronológica. Ao passar com o cursor sobre um marcador, será exibido o nome do marcador.
Você pode selecionar e segurar (ou clicar com o botão direito do mouse) o marcador para viajar para essa posição, renomear ou excluir o marcador.
Janela de Módulos
Uma nova janela mostra módulos e as suas informações relacionadas. Está disponível através da faixa de opções Exibir. Apresenta:
- O nome do módulo, incluindo o local do caminho
- O tamanho em bytes do módulo carregado
- O endereço base em que o módulo é carregado
- A versão do ficheiro
Nomes e descrições de threads disponíveis durante a depuração ao vivo
Os nomes de thread definidos a partir de SetThreadDescription agora estão disponíveis durante a depuração em modo de utilizador ao vivo. Os nomes de thread estão disponíveis usando o comando "~" ou o modelo de dados do depurador.
0:000> ~
0 Id: 53a0.5ffc Suspend: 1 Teb: 000000b1`db1ed000 Unfrozen "Hello world!"
7 Id: 53a0.9114 Suspend: 1 Teb: 000000b1`db1ef000 Unfrozen
8 Id: 53a0.2cc4 Suspend: 1 Teb: 000000b1`db1f1000 Unfrozen
9 Id: 53a0.5c40 Suspend: 1 Teb: 000000b1`db1f3000 Unfrozen
0:000> dx @$curthread
@$curthread : ConsoleTestApp!ILT+25(mainCRTStartup) (00007ff7`fac7101e) [Switch To]
Id : 0x5ffc
Name : Hello world!
Stack
Registers
Environment
Suporte PDB portátil
Foi adicionado suporte a PDB portátil. O formato Portable PDB (Program Database) descreve uma codificação de informações de depuração produzidas por compiladores de linguagens Common Language Infrastructure (CLI) e consumidas por depuradores e outras ferramentas. Para obter mais informações, consulte Portable PDB Symbols.
Outras alterações e correções de bugs
- WinDbg agora suporta a depuração de dumps de kernel para AMD64 e Linux.
- Melhorias na gravação de viagens no tempo e outras correções.
1.0.1912.11001
Cronogramas TTD - Adicionámos uma nova janela que exibe uma representação visual de eventos importantes no seu rastro: exceções, pontos de interrupção, chamadas de função e acessos à memória. As linhas do tempo serão abertas automaticamente e exibirão exceções (se houver) e pontos de interrupção. Para obter mais informações, consulte WinDbg Preview - Timeline.
Alternámos para o cromado de janela padrão - A interface de janela personalizada que usávamos, apesar de mais bonita, estava a causar alguns problemas de dimensionamento e redimensionamento a um número significativo de pessoas, pelo que optámos por removê-la temporariamente.
Menu Arquivo de navegação melhorada com teclado - O menu de arquivo agora é muito mais fácil de navegar apenas utilizando o teclado.
Outras alterações e correções de bugs
- A janela de pilha e locais será desativada quando o alvo estiver ativo e não mostrará "Erro indefinido" quando não houver alvo.
- Adicionada uma coluna "Serviços" à caixa de diálogo de anexar para encontrar facilmente quais serviços estão em execução.
- Corrigido um bug que fazia com que a deteção de arquitetura não funcionasse ao iniciar aplicativos com argumentos.
- A janela de desmontagem oferece uma melhor desmontagem quando símbolos privados são carregados.
- jsprovider.dll agora é carregado automaticamente, então removemos o botão "Carregar JSProvider" da barra de ferramentas de script.
1.0.1908.30002
Melhorias nos objetos de chamadas TTD - consultas de chamadas agora incluem nomes, tipos e valores de parâmetros. Ao consultar rastreamentos para chamadas de função, você pode obter parâmetros totalmente digitados e seus valores, facilitando a filtragem de resultados por parâmetros.
Suporte para Open Enclave - WinDbg Preview agora pode depurar aplicativos Open Enclave (OE) para obter mais informações, consulte Open Enclave debugging).
ELF Core Dumps - Como parte do suporte ao Open Enclave, o WinDbg pode abrir dumps de núcleo ELF e binários, bem como símbolos DWARF (DWARF 5 não é suportado atualmente) provenientes tanto de enclaves como de aplicações Linux. Ao abrir um dump principal de um aplicativo que não seja do Windows, janelas e comandos básicos devem funcionar corretamente, mas a maioria das extensões e comandos específicos do Windows não funcionarão. Os arquivos ELF e DWARF serão baixados dos servidores de símbolos seguindo as convenções de chave definidas aqui. Enclaves são o único cenário suportado, mas estamos abertos a comentários sobre a abertura de outros dumps de núcleo do Linux.
Alteração de formato de ficheiro TTD - Fizemos uma grande atualização no formato de ficheiro para rastreamentos TTD que rompe a compatibilidade futura. As versões anteriores do WinDbg Preview não poderão abrir rastreamentos gravados com esta (e futuras) versões do WinDbg Preview, mas esta (e futuras) versões poderão abrir rastreamentos novos e antigos.
Outras alterações
- TTD agora usará o mecanismo de 64 bits para indexação e a arquitetura apropriada do mecanismo de depurador (32-bit ou 64-bit) para reexecuções, a fim de minimizar possíveis problemas de memória ao indexar e problemas de SOS ao reproduzir.
- Executar 'dx' sem quaisquer parâmetros agora mostrará o namespace raiz para facilitar a navegação.
- Agora você pode modificar o símbolo padrão e o local do cache de origem através do menu de configurações.
- Suporte melhorado para gravação de AVX-512 (a gravação de AVX-512 causará um abrandamento maior do que o normal).
- Habilitámos licenciamento offline.
1.0.1905.12001
Melhorias na mitigação de erros do SymSetDiaSession - A nossa correção no mês passado para mitigar o erro causado por aplicações a injetar DbgHelp no nosso processo ainda não funcionava em alguns cenários. Fizemos melhorias e continuaremos monitorando os comentários sobre esse erro.
Personalização da cor de destaque - Muitos cenários exigem várias instâncias do WinDbg abertas, e alternar entre elas pode ser confuso e demorar algum tempo para descobrir qual é a "certa". Adicionámos a capacidade de alterar a cor de destaque azul para ajudar a distinguir visualmente as sessões e facilitar a troca entre elas.
Basta selecionar o separador Exibir e escolher uma opção para a cor de destaque na última seção. Quando sessões futuras forem iniciadas a partir de destinos recentes, a cor de destaque será mantida como parte do espaço de trabalho do destino.
Melhorias na tokenização de origem - A janela de origem agora tem suporte básico para tokenizar arquivos de origem em Rust e C++ com SEH __try/__except/__finally/__leave.
Melhorias de corrutina - Suporte melhorado para variáveis locais de corrutina e certas variáveis otimizadas.
Símbolo padrão e configuração de cache de origem - Adicionada uma opção ao menu de configurações em Configurações de depuração para alterar o local do cache para símbolos. Nota - Há um problema conhecido de que fazer esse espaço em branco fará com que o carregamento do código-fonte falhe. Adicionaremos validação para evitar que isso aconteça em uma versão futura.
-pv corrige - Corrigido um bug que poderia ter impedido -pv (anexo não invasivo) de funcionar em algumas circunstâncias.
1.0.1904.18001
Correção para o erro SymSetDiaSession - Temos recebido relatórios há algum tempo de um erro que impede o lançamento do WinDbg Preview em algumas situações. Existem alguns aplicativos externos que tentam injetar uma versão do DbgHelp em nosso processo antes de carregá-lo. Alguns deles estão usando uma versão do DbgHelp com funcionalidade ausente, o que causa esse erro quando tentamos usar esses recursos. Adicionamos uma correção para isso e rastrearemos se ainda houver cenários em que isso ocorra.
Controle de Fonte - Adicionámos configurações para controlar a fonte e o tamanho da letra. Existem duas configurações diferentes, uma para janelas de texto (janelas monoespaçadas como desmontagem, fonte, comando, etc.) e outra para janelas de ferramentas (locais, pilha, etc.). Ainda há algumas áreas que não são afetadas por essas opções que atualizaremos no futuro.
Destacando melhorias - O realce persistente de texto na janela de comando agora também destacará o texto nas janelas de origem e notas.
Melhorias no carregamento do código-fonte - Alterámos a forma como funciona o carregamento de ficheiros de origem. Anteriormente, ao abrir um arquivo de origem, as operações do mecanismo, como executar comandos adicionais, não eram possíveis ou eram imprevisíveis. Alteramos onde o carregamento ocorre para permitir um melhor paralelismo e um cancelamento mais confiável das operações de abertura da fonte.
Outras alterações e correções de bugs:
- Adicionado "Ir para desmontagem" ao menu de contexto da janela de origem.
- Adicionada uma caixa de seleção para "Seguir instruções atuais" na janela de desmontagem.
- Corrigido um bug que fazia com que a janela de comando funcionasse lentamente ao emitir muito texto.
- Teclas Page Up e Page Down alteradas para funcionar de forma semelhante ao Visual Studio.
- Quando um arquivo ASM é aberto na janela de origem, ele agora terá comentário básico, cadeia de caracteres e destaque de diretiva
1.0.1812.12001
Esta versão inclui estas atualizações.
de cabeçalho C++ do modelo de dados do depurador - Há um novo cabeçalho C++, DbgModel.h, incluído como parte do SDK do Windows para estender o modelo de dados do depurador via C++. Você pode encontrar mais informações em Visão geral do Data Model de Depuração C++. Esta versão inclui uma nova extensão que adiciona mais alguns recursos de "estilo API" ao modelo de dados do depurador que pode ser acessado através do comando 'dx', JavaScript e o novo cabeçalho DbgModel.h. Essa extensão estende o modelo de dados para incluir conhecimento sobre assembly e execução de código por meio do namespace Debugger.Utility.Code e do sistema de arquivos local por meio do namespace Debugger.Utility.FileSystem.
Extensão de tipos sintéticos Com esta nova extensão de API, temos uma nova amostra em nosso repositório GitHub aqui - https://github.com/Microsoft/WinDbg-Samples/tree/master/SyntheticTypes. Esta extensão JavaScript lê arquivos de cabeçalho C básicos e define informações de tipo sintético para as estruturas e uniões definidas no cabeçalho. Através do comando dx, a memória pode ser visualizada de forma estruturada como se houvesse um PDB com informações de tipo para esses tipos.
Outras alterações e correções de bugs:
- WinDbg Preview agora irá lidar de forma mais inteligente trazendo janelas de origem ou a janela de desmontagem para o primeiro plano ao revisar.
- Rearranjou o título da janela do WinDbg Preview para ter mais informações importantes no início durante a depuração do kernel.
- O contraste de fundo alternado na janela de comando deve ser um pouco mais percetível.
1.0.1810.2001
Esta versão inclui estas atualizações.
- Nova caixa de diálogo Configurações que é acessada no menu Arquivo ou no friso Página Inicial.
- Caixa de diálogo Configurações de eventos e exceções. Este menu altera a forma como o depurador lida com eventos e exceções, o equivalente aos comandos 'sx' ou à caixa de diálogo de filtros de eventos do WinDbg. Selecione Configurações na faixa de opções inicial e pressione "Eventos e exceções" à esquerda para gerenciá-los.
- Indexador TTD melhorado com melhor desempenho. Isso aumenta o desempenho da indexação de arquivos de rastreamento TTD, tornando o processo de indexação muito mais rápido (entre 2x-10x) enquanto torna os arquivos de índice muito menores (~50% menores). As melhorias de desempenho são mais notáveis para rastreamentos com mais de 4GB de tamanho, ou ao usar uma máquina com numerosos núcleos de CPU (8+). O novo indexador torna mais viável depurar rastreamentos muito grandes (50GB+).
- Novo debugArch sinalizador de lançamento para especificar a arquitetura. WinDbg Preview tenta iniciar o mecanismo do depurador com a versão de bits apropriada para o alvo, de modo a melhorar o suporte à depuração de código gerido. Há circunstâncias em que ele não pode determinar a mordida certa ou você pode querer substituir o que ele decide. Use -debugArch x86|amd64 para controlar a arquitetura do motor do depurador.
Outras alterações e correções de bugs:
- Corrigido um bug que fazia com que barras pretas aparecessem num debugger de ecrã inteiro com uma janela flutuante.
- Corrigido um bug que fazia com que as opções de símbolo fossem limpas sem querer.
- O histórico de comandos agora é preservado ao iniciar a partir de alvos recentes.
- Na janela do modelo de dados, agora você pode editar valores.
- Os rastreamentos TTD não indexados agora terão mais clareza de que não estão indexados.
- Melhor desempenho da janela de locais
- Adicionado um botão na barra de ferramentas para salvar os registos da janela de comandos em um ficheiro.
- Adicionado. SelectMany(<projeção>) para o conjunto padrão de métodos LINQ.
1.0.1807.11002
Esta versão inclui estas atualizações.
Guarda automática e carregamento de pontos de interrupção. Este é um primeiro passo para substituir espaços de trabalho. Estamos a iniciar por esse caminho ao permitir o salvamento e o carregamento de pontos de interrupção. Iniciar algo que depuraste anteriormente no separador "Recentes" no menu de ficheiros irá carregar os pontos de interrupção dessa sessão. O plano é expandir essa funcionalidade para preservar mais informações nas sessões. Os pontos de interrupção de hardware (ba) e outras propriedades dos pontos de interrupção, como contextos específicos de thread e de processo, bem como condições, não estão a ser guardados atualmente.
Pequenas alterações e correções de bugs:
- Adicionadas opções de linha de comando -x, -xe, -xd, -xn e -xi para controlar a manipulação de exceções e eventos. Essas opções de linha de comando se comportam exatamente como suas contrapartes de comando.
- A janela de notas agora suporta formatação em negrito, sublinhado e itálico.
- Corrigidos alguns problemas de zoom e rolagem.
- A seleção de texto nas janelas de comando, memória, fontes ou desmontagem agora mostrará um realce leve sobre outras ocorrências do texto selecionado.
- Corrigido um bug em que interromper o carregamento de símbolos fazia com que o carregamento de símbolos falhasse pelo resto da sessão.
- O NatVis será agora recarregado corretamente ao reiniciar uma sessão.
1.0.1805.17002
Esta versão inclui estas atualizações.
Nova janela de desmontagem - A janela de desmontagem agora inclui:
- Ao rolar para cima ou para baixo, serão carregados continuamente mais conteúdos de desmontagem, quando possível.
- Realce de sintaxe para números, endereços de código e opcodes.
- Selecionar um símbolo de código levará a janela de desmontagem para esse local.
- Colocar o rato sobre os números exibidos mostrará uma dica de ferramenta que converterá esse número para outras bases.
- Títulos que indicam o início de uma função.
Janela de origem mais rápida - A janela de origem foi atualizada para ser mais rápida e eficiente em termos de recursos.
Pequenas alterações e correções de bugs:
- Corrigidos problemas relacionados ao cache de símbolos
- Foram corrigidos alguns casos em que a alternância inicial não era utilizável quando o alvo não estava dividido.
- Se você pressionar tab na janela de comando sem nada disponível, o cursor permanecerá no campo de entrada
- WinDbg Preview agora vai detetar automaticamente a arquitetura de bits ao abrir ficheiros CAB
1.0.1804.18003
Esta versão inclui estas atualizações.
Estado do símbolo e melhorias de cancelamento - Há momentos em que a exibição do depurador está OCUPADO a carregar símbolos, e é difícil determinar o que está a fazer e porquê sem !sym noisy ativado. Atualizámos o WinDbg Preview para ter uma melhor comunicação sobre o que está a fazer ao carregar símbolos para ajudar a resolver quaisquer problemas. Além de poder ver facilmente o que está a acontecer, efetuámos algumas alterações que devem tornar o cancelamento de símbolos mais fiável e a janela de registos conterá alguns dos detalhes que são normalmente exibidos quando o !sym noisy está ativado. Se você pressionar View -> Logs você obterá a saída de carregamento de símbolos barulhenta completa sem ter que ativá-la e tentar recarregar os símbolos.
Janela de anotações experimentais - WinDbg Preview agora dispõe de uma janela para tomar notas. Basta clicar em Ver -> "Notas" para abri-lo. Se você copiar/colar nele, os links DML serão preservados e ainda funcionarão como se fosse a janela de comando. Também pode guardar e carregar ficheiros de notas a partir do friso "Notas" quando a janela estiver aberta.
Janela de código-fonte experimental mais rápida - Para ajudar a melhorar o desempenho do WinDbg Preview, há uma nova janela de código-fonte experimental que é um pouco mais eficiente. Ainda há algumas lacunas em torno dos menus de contexto e do realce de sintaxe, mas queremos dar a todos a opção de experimentá-lo antes de terminar para nos dar feedback antecipado. Execute $UseFastSourceWindow para usá-lo. Se você quiser voltar para o antigo, corra $UseMonacoSourceWindow. A configuração será preservada em todas as sessões, você precisará fechar e reabrir janelas de código-fonte para obter a nova versão.
JSProvider API versão 1.2 - Para extensões JavaScript que declaram suporte para API versão 1.2:
- Qualquer objeto com um método .compareTo que saia do script terá um comparador personalizado nele (os operadores de comparação trabalharão no avaliador DX e em outros lugares: por exemplo: IModelObject::Compare)
- Qualquer objeto com um método .equals que saia do script terá um operador de igualdade personalizado nele (== e != funcionará no avaliador DX e em outros lugares: por exemplo: IModelObject::IsEqualTo)
- Os objetos nativos ou de modelo de dados que entram no script terão .compareTo e .equals neles que permitem o acesso a qualquer comparador personalizado ou implementações de igualdade personalizada.
Pequenas alterações e correções de bugs:
- O .server agora listará nomes de domínio totalmente qualificados para facilitar o uso quando houver problemas de domínio em torno de nomes curtos.
- Ctrl+G agora funciona na janela de origem.
- Adicionada barra de endereço à janela de desmontagem.
- WinDbg Preview agora irá lidar com _NT_SYMBOL_PATH de uma maneira mais esperada.
- Adicionada a opção de linha-de-comando -server.
- As consultas de modelo de dados TTD agora podem ser exibidas progressivamente, portanto, se você interrompê-las, ainda verá alguns resultados. Este recurso ainda é experimental e opcional. Para ativá-lo, execute
dx @$cursession.TTD.AsyncQueryEnabled = 1
. - O comando 'dps' agora tem links para os arquivos de origem aos quais se refere.
1.1801.19001.0
Esta versão inclui estas atualizações.
Realce de Texto - Agora é possível destacar todas as ocorrências do texto selecionado diretamente no depurador. Para usar esse recurso, basta selecionar algum texto na janela de comando e, em seguida, selecionar "Destaque" na faixa de opções de comando ou pressionar CTRL + ALT + H. Usar um desses numa área de texto já realçada removerá o realce.
Se preferir usar comandos, você pode usar o comando "$hl":
$hl ["someValueHere"]
- Realçar o texto (ou remover o realce se já estiver realçado)
$hl clearAll
– Limpar todas as entradas destacadas
$hl caseSensitive [1|0]
- Defina a correspondência de realce para ser sensível ou insensível a maiúsculas (o padrão é insensível a maiúsculas)
Esta versão também inclui algumas pequenas correções de bugs.
1.1712.15003.0
Esta versão inclui estas atualizações.
consultas de memória TTD - Agora é possível consultar o TTD para acessos à memória de forma semelhante a como se consulta para chamadas atualmente. Isso permite que você encontre todas as leituras, gravações e execuções que acessam uma faixa específica de memória.
Ler e escrever um exemplo: dx @$cursession.TTD.Memory(startAddress, endAddress, "rw")
Exemplo de execução único: dx @$cursession.TTD.Memory(startAddress, endAddress, "ec")
Alterações nas configurações - o WinDbg Preview agora salvará automaticamente as configurações entre as sessões, incluindo o caminho do símbolo e o caminho de origem.
Melhorias no JavaScript
- Números e números de 64 bits em JavaScript agora contêm um método de módulo que permite uma verdadeira operação de módulo de 64 bits.
- Os objetos definidos em JavaScript agora podem implementar uma noção comparável ou equatable personalizada que funcionará em dx usando operadores C++ padrão ou em operações LINQ. Para utilizar isso, o script deve declarar na matriz initializeScript que ele suporta uma nova versão da API do host inserindo um registro "new host.apiVersionSupport(1, 2)". Depois de fazer isso, você pode usar essas funções em qualquer consulta LINQ 'dx' ou Data Model Window. Se o método implementa .compareTo(other), ele é comparável (operadores de comparação trabalham em dx e LINQ). Se o método retorna um valor negativo, como "este < outro". Se o método retornar zero, "este == outro". Se o método retorne um valor positivo: "este > outro". Se o método implementa .equals(other), é comparável (== funciona em dx e LINQ). O método deve retornar true ou false.
Pequenas alterações e correções de bugs:
- Corrigido um bug em que a pilha e as janelas locais não estavam funcionando durante a depuração de inicialização
- Atualizámos a saída do LM para relatar com mais precisão campos como a versão do produto e outros semelhantes.
- Foi ativado o botão "sair para trás" durante sessões TTD.
- Adicionado suporte para -lsrcpath
- Os cabeçalhos nas janelas locais, de observação e de modelo agora não desaparecem ao rolar para baixo
- Quando premir ALT+Tab para voltar para o WinDbg Preview, a janela de comando preservará corretamente a localização do cursor.
- Adicionado atalho de teclado CTRL+ALT+V para alternar o modo verboso
- Agora você pode desativar a rolagem automática da janela de comando selecionando e mantendo pressionada (ou clicando com o botão direito do mouse) a guia da janela de comando e escolhendo "desativar a rolagem automática"
- Agora você pode depurar processos filho através da página avançada executável de inicialização.
1.0.14.0
Esta versão inclui estas atualizações.
Experiência aprimorada do servidor de processo - Uma nova notificação no menu Arquivo para mostrar a qual servidor de processo você está conectado e interagindo com foi adicionada. Como parte dessas alterações, ao encerrar uma sessão de depuração, a conexão do servidor de processo persistirá e poderá ser desconectada no menu Arquivo.
Novas opções de layout predefinidas na faixa de opções Exibir - Há uma nova opção "Layouts" na faixa de opções "Exibir". Atualmente, existem três layouts: o padrão, um focado na desmontagem e outro mínimo.
faixa de opções Depuração de Viagem no Tempo - Há uma faixa de opções aprimorada de Viagem no Tempo que aparecerá ao depurar um rastreamento de depuração de viagem no tempo.
Metadados de scripts JavaScript - Extensões JavaScript podem agora retornar metadados para propriedades e outras construções. Isso significa que a extensão pode fornecer strings de ajuda, indicar a base de exibição para valores e muito mais. Os metadados são fornecidos colocando um descritor de metadados em um objeto por meio da presença de Symbol.metadataDescriptor ou de uma chamada explícita para host.metadata.defineMetadata. Retornos de função, valores iterados e outros contextos de valor podem retornar metadados para seu valor via host.metadata.valueWithMetadata.
Atualizações da API JavaScript - Algumas alterações potencialmente quebrando o nível de origem foram feitas nas APIs dentro do provedor JavaScript (incluindo novos métodos projetados e propriedades em objetos nativos). As extensões existentes não verão nenhuma das alterações potencialmente significativas sem indicar que elas suportam uma nova versão da API JsProvider. O suporte para a nova versão da API é indicado colocando um registro host.apiVersionSupport na matriz retornada por initializeScript com uma declaração de suporte à versão 1.1. talvez? .. com um valor que indica suporte para a versão 1.1.
As alterações na API versão 1.1 incluem:
- host.getModuleSymbol e host.getModuleType retornam null se não conseguirem encontrar o símbolo em vez de lançar uma exceção.
- Todos os objetos nativos têm a propriedade address neles, além de .targetLocation. Se o objeto não tiver um endereço, uma exceção será lançada ao acessar a propriedade.
- Todos os objetos nativos têm novos métodos .getObjectValue e .setObjectValue para acessar propriedades no objeto que podem entrar em conflito com nomes que JavaScript coloca no objeto (por exemplo: 'address').
Alterações adicionais de JavaScript
- As extensões JavaScript agora podem adicionar e remover propriedades em objetos de modelo de dados por meio de Object.defineProperty e do operador delete. Adicionar ou registrar uma classe JavaScript como um modelo pai ou assinatura de tipo ainda é a maneira altamente preferida de manipular o modelo de objeto.
- As extensões JavaScript agora podem modificar variáveis globais dentro de módulos no destino de depuração por meio de uma nova API host.setModuleSymbol.
- Todas as funções matemáticas que estão no tipo de biblioteca de 64 bits (por exemplo: .add, .subtract, .multiply, .divide, etc...) agora também estão presentes em números JavaScript.
- As funções e propriedades JavaScript agora podem retornar valores que são enums por meio de marshaling personalizado. Um acessador de função ou de propriedade pode retornar host.typeSystem.marshalAs(value, type...) para acionar este marshaling personalizado.
- O comando breakpoint no depurador de script agora pode interromper nos nomes das funções, além de posições de linha/coluna.
- Os objetos de tipo em extensões JavaScript têm acesso ao módulo que contém por meio da propriedade .containingModule.
Pequenas alterações e correções de bugs:
- Corrigiu-se a formatação das abas condicionais da barra de ferramentas para serem menos confusas.
- DML reformulado para ser mais rigoroso na análise para melhorar o desempenho.
- Várias correções no desempenho e no comportamento da funcionalidade CTRL+F.
- Adicionado um aviso ao executar sem elevação antes de tentar usar o TTD.
- Adicionada a opção de substituir a deteção automática de bitness de destino.
- Desativadas várias opções do menu de ficheiro e do friso quando elas não podem ser usadas (como "Ir" quando em um ficheiro de despejo).
Problemas conhecidos:
- A ferramenta SOS não funcionará em rastreamentos x86.
1.0.13.0
Esta versão adiciona o Rastreamento de Viagem no Tempo. Depuração de Viagem no Tempo permite gravar um processo e, em seguida, reproduzi-lo mais tarde, tanto para frente quanto para trás. A Depuração Temporal (TTD) pode ajudá-lo a resolver problemas mais facilmente, permitindo-lhe voltar atrás na sessão do depurador, em vez de ter que reproduzir o problema até encontrar o erro. Para obter mais informações, consulte Depuração de Viagem no Tempo - Visão Geral.
1.0.12.0
Esta versão foi a primeira versão do WinDbg Preview. Para obter informações gerais sobre os recursos disponíveis no WinDbg Preview, Principais recursos do WinDbg.