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.2409.17001.0
Correções de acessibilidade
Corrigimos vários problemas ao interagir com o WinDbg usando um leitor de tela.
Correções de bug
- Corrigido o problema em que a desinstalação do WinDbgX impede a inicialização do WinDbg clássico.
- Corrigido o problema em que o WinDbgX era redimensionado após aparecer durante a inicialização.
Depuração de Viagem no Tempo (TTD)
- Atualizado para a versão 1.11.429.
- Para obter detalhes, consulte Notas de versão do TTD.
1.2407.24003.0
Novos recursos
Novo provedor de scripts JavaScript
Agora estamos enviando um novo provedor JavaScript compatível com versões anteriores baseado no V8. Como resultado disso, os hosts arm64 agora podem usar extensões JavaScript. A interface do usuário arm64 agora também tem como padrão o mecanismo arm64.
O novo provedor é habilitado por padrão em todas as arquiteturas.
Em x86 e x64, ele pode ser ativado/desativado por meio dos .veighton
e comandos .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. Esse meio de extensibilidade é realizado por meio da adição de visualizações ao manifesto da galeria de extensão. Uma visualização vincula um acoplamento de um nome e um ícone a uma consulta de modelo de dados e a um tipo de visualização. A documentação pode ser encontrada em Documentação do manifesto da galeria de extensões
Foram adicionados parâmetros de exceção ao acionador de carga de exceção da galeria de extensões
Uma extensão de galeria agora pode ser carregada condicionalmente com base em valores específicos de parâmetros de exceção. Consulte Documentação do manifesto da galeria de extensões para obter detalhes.
Opção de configuração para nunca fazer download de símbolos específicos
Agora você pode pular o download de símbolos para imagens específicas.
Na seção Symbols
do seu arquivo de configuração 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 visualizar a lista atual de símbolos que não estão sendo baixados.
Você também pode alterar a lista diretamente do depurador da seguinte forma:
dx @$curprocess.Modules[1].DisableSymbolDownload()
dx @$curprocess.Modules[1].EnableSymbolDownload()
Novo comando para exibir informações do SourceLink
Para ajudar na depuração de problemas com o download de fontes com base no SourceLink inserido, agora você pode usar o comando !lmsourcesinfo module
para exibir o conteúdo do SourceLink que o depurador usará.
Aprimoramentos gerais da interface do usuário
Fizemos alguns pequenos aprimoramentos em janelas como a janela de módulos ou a janela de pilha:
- Agora você pode classificar as visualizações de grade clicando na coluna do cabeçalho.
- Há mais ações disponíveis com o botão direito do mouse.
- A janela da pilha mostra os quadros como embutidos quando apropriado.
Correções de bug
- Foi corrigido um problema em que PDBs maiores que 4 GB não eram baixados por HTTP.
- O Edge é um exemplo desse tipo de PDB.
- Corrigido o problema de armazenamento em cache no provedor de credenciais do depurador (agora ele armazenará em cache as credenciais por site).
- Correção de erros durante a avaliação dos acionadores de carregamento da galeria de extensões.
- Corrigido um bug com
!address
que poderia causar uma falha. !heap -a -a
deve funcionar agora.
TTD
Consulte Notas de versão do TTD para a versão 1.11.410.
1.2402.24001.0
Novos recursos
Depuração do Live Linux
Agora você pode depurar ao vivo um processo Linux. Para obter mais informações, consulte estes tópicos:
Depuração de processo remota ao vivo do Linux
No futuro próximo, o cliente WinDbg ainda precisará do Windows, pois o WinDbg não é executado no Linux.
Registre um subconjunto da execução com a Depuração de Viagem no Tempo
Agora é possível especificar uma lista de módulos a serem registrados para que o TTD se concentre 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 especificar o(s) módulo(s) que deseja gravar. (consulte problemas conhecidos abaixo).
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 nosso código de exemplo e nossa documentação.
Janela de registro compacta
A nova janela de registro se parece com a saída do comando r
. Observe que ainda não há suporte para a edição na nova janela de registro.
Novos parâmetros para e
(Inserir valores) em comandos de memória
Os comandos e
(inserir valores) na memória agora suportam endereços físicos, assim como os comandos d
(exibir memória). Observe que essas opções apenas têm suporte 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 virtual. |
/p[c] |
O mesmo que /p , exceto que a memória em cache será lida. Os colchetes 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 colchetes 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 colchetes em torno de wc devem ser incluídos. |
Para mais informações, consulte e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (inserir valores).
Correções de bugs
- Suporte para desmembramento de nomes Rust na depuração do Linux
- Aprimoramentos na depuração de CLR
- Adicionar a capacidade de forçar a pilha de modo misto a percorrer os quadros CLR
- Configuração de
ForceMixedModeStackWalker
adicionada aconfig.xml
ouDbgX.xml
. - Adicionado comando
!forceclrmixedmodeunwind
para investigações pontuais ou se não for possível alterar a configuração.
- Configuração de
- Adicionar a capacidade de forçar a pilha de modo misto a percorrer os quadros CLR
- Melhorias gerais da depuração CLR no Linux
- Correção de vários problemas relacionados ao LinuxKernel.js e às variáveis per-cpu
- Adicionado o comando
!runq
ao LinuxKernel.js para poder despejar as filas de execução do agendador do kernel per-cpu (semelhante em forma ao comando do utilitário de travamento dorunq
Linux) - Corrigidos vários comandos no LinuxKernel.js para corresponder às mudanças no kernel: em kernels mais recentes, a árvore de temporizadores usa nós RB em cache em vez de nós RB brutos; em kernels mais recentes, a lista all_bdevs desapareceu, de modo que os dispositivos de bloco agora são percorridos a partir do superbloco (blockdev_superblock)
- Adicionado o comando
- Várias correções de natvis para funcionar mais como as versões recentes do Visual Studio
- Preferir sourcelink a sourceinfo herdado
- Adicionado o comando
!lmsourcesinfo <module>
para exibir fluxos de sourcelink do pdb (para ajudar na depuração de problemas com sourcelink).
- Adicionado o comando
Problemas conhecidos
Ao especificar uma lista de módulos a serem registrados com o TTD, a especificação de mais de um módulo não funciona nesta versão.
1.2308.2002.0
Muitas correções de bugs e pequenos aprimoramentos.
1.2306.12001.0
Muitas correções de bugs e pequenos aprimoramentos.
1.2303.30001.0
Observação
O depurador foi renomeado de WinDbg Preview para WinDbg.
O depurador herdado lançado com as Ferramentas de Depuração para Windows será referenciado como WinDbg (clássico).
Depuração de Viagem no Tempo no ARM64
O WinDbg não só é executado nativamente no ARM64, como também habilitamos a depuração de viagem no tempo (TTD) de processos nativos do ARM64. Agora você pode gravar processos ARM64 nativos (e processos x86 e ARM32) e depurá-los facilmente, mesmo em sua máquina x64. O suporte a processos x64 ou habilitados para x64 (ARM64EC) em dispositivos ARM64 ainda não está disponível.
O desempenho geral do TTD também foi aprimorado, 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 ambígua de ponto de interrupção
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 para vários locais. Para obter mais informações, consulte Resolução ambígua do ponto de interrupção.
1.2107.13001.0
Pesquisa Regex
A pesquisa do WinDbg Preview agora inclui a opção de pesquisar usando expressões regulares: Regex. Habilite o Regex na janela que deseja pesquisar pressionando 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, apenas a sessão de depuração remota e arquivos de despejo. Para obter mais informações, consulte WinDbg: Modo Restrito.
Suporte a variável sombreada
Em versões anteriores, o WinDbg gera 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 eliminará a ambiguidade de 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 seria exibida.
1.2104.13002.0
Seleção e pesquisa de números inteligentes
Um recurso de produtividade conveniente do WinDbg Preview é a capacidade de detectar padrões na janela de comando. Para fazer isso, selecione qualquer texto e todas as outras instâncias desse texto realçadas. Como esse realce é útil ao analisar padrões de memória, agora ele também realçará números equivalentes em outros radixes, independentemente de como o número esteja formatado em hexadecimal, decimal ou notação científica. Para obter mais informações sobre esquemas de numeração, consulte n (definir base de números)..
Exemplo:
Ao selecionar 0x000001e2fb3f6160
, todas as outras instâncias são realçadas, independentemente do formato.
Esse recurso também funciona com realces semi temporários. Ctrl + Clique duplo em um número para realçar todas as suas instâncias. Dessa forma, é possível manter o controle de vários números importantes em todo o histórico de comandos (para limpar o realce, Clique duplo + Ctrl 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 do 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
Ao depurar um processo WOW de 32 bits de um contexto de 64 bits, os usuários agora podem acessar os estados host e 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 sobre como trabalhar com JavaScript, consulte Script de depuração de JavaScript: depuração de JavaScript.
Melhorias de acessibilidade
Com o WinDbg Preview, estamos comprometidos em criar um depurador que seja inclusivo para engenheiros portadores de deficiência e estamos melhorando continuamente a acessibilidade. Foram feitos os aprimoramentos a seguir.
- Os links da janela de comando agora podem ser clicados através do teclado (Shift+Enter)
- Melhoria na navegação do menu principal pelo teclado
- Melhoria na navegação da faixa de opções pelo teclado
- Maior contraste nos elementos da interface do usuário
Novo tipo de acesso a dados "Substituir" para o depurador de viagem no tempo
O Depurador de Viagem no tempo (TTD) agora oferece um tipo de acesso a dados "Substituir". As consultas de memória, como dx $@cursession.TTD.Memory()
agora têm uma coluna adicional mostrando os valores antigos das gravações.
Outras correções, aprimoramentos e atualizações
- Recurso adicionado para detectar e aplicar automaticamente a solução alternativa para o problema de hardware do USB 3.1 quando o host e o destino da depuração do kernel forem controladores USB 3.1.
- Adicionado um novo atalho de interface do usuário: Ctrl + Shift + Clique sobre um link DML para copiá-lo para a área de transferência
1.0.2007.01003
Marcadores da linha do tempo
Marque as posições importantes de viagem no tempo no WinDbg em vez de copiar manualmente colando a posição no bloco de notas. Os marcadores facilitam visualizar rapidamente as diversas posições no rastreamento em relação a outros eventos e anotá-las.
Você pode dar um nome descritivo para marcadores.
Acesse Favoritos na da janela Linha do Tempo disponível em Exibir > Linha do Tempo. Quando você passa o mouse em um marcador, ele mostra o nome do marcador.
Você pode selecionar e manter pressionado (ou clicar com o botão direito do mouse) o marcador para ir até aquela posição, renomear ou excluir o marcador.
Janela Módulos
Uma nova janela mostra os módulos e suas informações relacionadas, está disponível na faixa de opções Visualização. Exibe:
- O nome do módulo, inclusive o local do caminho
- O tamanho em bytes do módulo carregado
- O endereço base no qual o módulo é carregado
- A versão do arquivo
Nomes/descrições de thread disponíveis na depuração ao vivo
Os nomes de thread definidos em SetThreadDescription agora estão disponíveis ao fazer a depuração do modo de usuário 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 a PDB portátil
O suporte a PDB portátil foi adicionado. O formato PDB (banco de dados do programa) portátil descreve uma codificação de informações de depuração produzidas por compiladores de linguagens da Infraestrutura de Linguagem Comum (CLI) e consumidas por depuradores e outras ferramentas. Para mais informações, consulte Símbolos PDB portáteis.
Outras alterações e correções de bugs
- O WinDbg agora dá suporte à depuração de despejo de kernel AMD64 e Linux.
- Aprimoramentos de gravação de viagem no tempo e outras correções.
1.0.1912.11001
Linhas do tempo TTD: adicionamos uma nova janela que exibe uma representação visual de eventos importantes em seu rastreamento: 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 presentes) e pontos de interrupção. Para obter mais informações, consulte WinDbg Preview — Linha do tempo.
Alternada para a janela chrome padrão: a janela chrome personalizada que estávamos usando, embora mais bonita, estava causando alguns problemas de dimensionamento e redimensionamento para um número considerável de pessoas, por isso optamos por removê-la por enquanto.
Menu Arquivo com navegação aprimorada pelo teclado: o menu de arquivos agora é muito mais fácil de navegar usando apenas o teclado.
Outras alterações e correções de bugs
- A janela de pilha e locais agora será desabilitada quando o destino estiver em execução e não mostrará "Erro não especificado" quando não houver destino.
- Adicionada uma coluna "Serviços" à caixa de diálogo de anexação para encontrar facilmente quais serviços estão em execução.
- Corrigido um bug que fazia com que a detecção de arquitetura não funcionasse ao iniciar aplicativos com argumentos.
- A janela de desmontagem melhorou a desmontagem quando símbolos privados são carregados.
- jsprovider.dll agora é carregado automaticamente, então removemos o botão "Carregar JSProvider" da faixa de opções de script.
1.0.1908.30002
Aprimoramentos nos objetos de chamadas TTD - Chamadas de consultas agora incluem nomes, tipos e valores de parâmetros. Ao consultar rastreamentos para chamadas de função, você pode obter parâmetros totalmente tipados e seus valores, facilitando a filtragem de resultados por parâmetros.
Suporte para o Open Enclave: o WinDbg Preview agora pode depurar aplicativos Open Enclave (OE). Para obter mais informações, consulte Depuração do Open Enclave.
ELF Core Dumps: como parte do suporte ao Open Enclave, o WinDbg pode abrir despejos de núcleo e binários ELF, bem como símbolos DWARF (o DWARF 5 não é suportado no momento) de aplicativos Enclaves e Linux. Ao abrir um despejo de memória de um aplicativo que não seja do Windows, as janelas e os 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 principais convenções definidas aqui. Os enclaves são o único cenário com suporte, mas estamos abertos a comentários sobre a abertura de outros despejos de memória do Linux.
Alteração no formato de arquivo TTD: fizemos uma grande atualização no formato de arquivo para rastreamentos TTD que interrompe a compatibilidade com versões futuras. As versões anteriores do WinDbg Preview não poderão abrir rastreamentos registrados 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
- O TTD agora usará o mecanismo de 64 bits para indexação e o número de bits apropriado do mecanismo do depurador para reproduções para minimizar possíveis problemas de memória durante a indexação e problemas de SOS ao reproduzir.
- Executar "dx" sem nenhum parâmetro 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 por meio do menu de configurações.
- Suporte aprimorado para gravação de AVX-512 (gravação de AVX-512 causará uma desaceleração maior do que o normal).
- Habilitamos o licenciamento offline.
1.0.1905.12001
Melhorias na mitigação de erros do SymSetDiaSession: nossa correção no mês passado para mitigar o erro causado por aplicativos que injetam DbgHelp em nosso processo ainda não estava funcionando em alguns cenários. Fizemos melhorias nele e continuaremos monitorando o feedback sobre esse erro.
Personalização de cores de destaque: muitos cenários precisam de várias instâncias do WinDbg abertas, e alternar entre elas pode ser confuso e levar algum tempo para descobrir qual é a "certa". Adicionamos 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 a faixa de opções Exibir e selecionar uma opção para 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 geração de tokens de origem: a janela de origem agora tem suporte básico para gerar arquivos de origem Rust e C++ SEH __try/__except/__finally/__leave.
Melhorias de corrotina: suporte aprimorado para variáveis locais de corrotina e determinadas variáveis otimizadas.
Configuração padrão do símbolo e do cache de origem: foi adicionada uma opção ao menu de configurações em Configurações de depuração para alterar o local do cache dos símbolos. Observação: há um problema conhecido que faz com que o carregamento do código-fonte falhe ao deixar esse espaço em branco. Adicionaremos validação para evitar que isso aconteça em uma versão futura.
-pv fixes corrigido um bug que pode ter impedido -pv (anexação não invasiva) de funcionar em algumas circunstâncias.
1.0.1904.18001
Correção para o erro SymSetDiaSession: há algum tempo recebemos relatos de um erro que impede que o WinDbg Preview seja iniciado 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: adicionamos configurações para controlar a fonte e o tamanho da fonte. Existem duas configurações diferentes, uma para janelas de texto (janelas mono espaçadas como desmontagem, origem, 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.
Aprimoramentos de realce: o realce persistente de texto na janela de comando agora também realçará o texto nas janelas de origem e anotações.
Melhorias no carregamento do código-fonte: alteramos o funcionamento do carregamento de arquivos de código-fonte. Anteriormente, ao abrir um arquivo de origem, as operações do mecanismo, como a execução de comandos adicionais, não eram possíveis ou eram imprevisíveis. Alteramos onde o carregamento ocorre para habilitar um melhor paralelismo e um cancelamento mais confiável das operações de abertura de origem.
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 as instruções atuais" na janela de desmontagem.
- Corrigido um bug que fazia com que a janela de comando fosse executada lentamente ao gerar muito texto.
- Alteradas as teclas de página para cima e para baixo para executar de forma semelhante ao Visual Studio.
- Quando um arquivo ASM é aberto na janela de origem, ele agora terá um comentário básico, uma cadeia de caracteres e um realce de diretiva
1.0.1812.12001
Esta versão inclui estas atualizações.
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 por meio do C++. Você pode encontrar mais informações em Visão geral do C++ do Modelo de Dados do Depurador. Esta versão inclui uma nova extensão que adiciona mais alguns recursos de "estilo de API" ao modelo de dados do depurador que podem ser acessados por meio do comando "dx", JavaScript e do novo cabeçalho DbgModel.h. Essa extensão amplia o modelo de dados para incluir conhecimento sobre montagem e execução de código por meio do Debugger.Utility.Code namespace, e o sistema de arquivos local por meio do Debugger.Utility.FileSystem namespace.
Extensão de tipos sintéticos Com esta nova extensão de API, temos um novo exemplo em nosso repositório GitHub aqui: https://github.com/Microsoft/WinDbg-Samples/tree/master/SyntheticTypes. Essa 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. Por meio do comando dx, a memória pode ser visualizada e estruturada como se você tivesse um PDB com informações de tipo para esses tipos.
Outras alterações e correções de bugs:
- O WinDbg Preview agora lidará de forma mais inteligente com o primeiro plano das janelas de origem ou da janela de desmontagem nas etapas.
- Reorganizado o título da janela do WinDbg Preview para ter informações mais importantes no início durante a depuração do kernel.
- O contraste alternado do plano de fundo na janela de comando deve ser um pouco mais perceptí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 na faixa de opções Início.
- Caixa de diálogo de configurações de eventos e exceções. Esse 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 clique em "Eventos e exceções" à esquerda para gerenciá-los.
- Indexador TTD aprimorado 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 e 10x) e tornando os arquivos de índice muito menores (~50%). As melhorias de desempenho são mais perceptíveis para rastreamentos com mais de 4 GB ou ao usar uma máquina com muitos núcleos de CPU (8+). O novo indexador torna mais viável a depuração de rastreamentos muito grandes (50 GB+).
- Novo sinalizador de inicialização debugArch para especificar a arquitetura. O WinDbg Preview tenta iniciar o mecanismo do depurador com o número de bits correto para o destino para dar melhor suporte à depuração de código gerenciado. Há circunstâncias em que ele não pode determinar o número de bits correto ou você pode querer substituir o que ele decide. Use -debugArch x86|amd64 para controlar a arquitetura do mecanismo do depurador.
Outras alterações e correções de bugs:
- Corrigido um bug que fazia com que barras pretas aparecessem em um depurador de tela inteira com uma janela flutuante aberta.
- Corrigido um bug que fazia com que as opções de símbolo fossem apagadas involuntariamente.
- O histórico de comandos agora é preservado ao iniciar a partir de destinos recentes.
- Na janela do modelo de dados, agora você pode editar valores.
- Os rastreamentos TTD não indexados agora ficarão mais claros do que os que não estão indexados.
- Desempenho aprimorado da janela locais
- Adicionado um botão da faixa de opções para salvar os logs da janela de comando em um arquivo.
- Adicionado. SelectMany(<projection>) para o conjunto padrão de métodos LINQ.
1.0.1807.11002
Esta versão inclui estas atualizações.
Salvamento e carregamento automáticos de pontos de interrupção. Este é um primeiro passo para substituir os espaços de trabalho. Estamos começando por esse caminho permitindo o salvamento e o carregamento de pontos de interrupção. Iniciar algo que você depurou anteriormente na guia "Recentes" no menu de arquivos agora carregará os pontos de interrupção dessa sessão. O plano é expandir essa funcionalidade para preservar mais informações entre as sessões. Os pontos de interrupção de hardware (ba) e outras várias propriedades em pontos de interrupção, como contextos específicos de thread e processo, bem como condições, não estão sendo salvos no momento.
Pequenas alterações e correções de bugs:
- Adicionadas opções de linha de comando -x, -xe, -xd, -xn e -xi para controlar o tratamento 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 oferece suporte à formatação em negrito, sublinhado e itálico.
- Corrigidos alguns problemas de zoom e rolagem.
- Selecionar texto nas janelas de comando, memória, fontes ou desmontagem agora mostrará um realce claro sobre outras instâncias do texto selecionado.
- Corrigido um bug em que interromper o carregamento do símbolo fazia com que o carregamento do símbolo falhasse pelo resto da sessão.
- O NatVis agora será 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:
- Rolar para cima ou para baixo carregará continuamente mais desmontagem sempre que possível.
- Realce de sintaxe para números, endereços de código e opcodes.
- Selecionar um símbolo de código saltará a janela de desmontagem para esse local.
- Passar o mouse sobre os números mostrará uma dica de ferramenta que converte esse número em outras bases.
- Cabeçalhos que significam 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 em torno do cache de símbolos
- Corrigidos alguns casos em que a quebra inicial de alternância não era utilizável quando o alvo não estava quebrado
- Se você pressionar tab na janela de comando sem nada disponível, o cursor agora permanecerá no campo de entrada
- O WinDbg Preview agora detectará automaticamente o número de bits ao abrir arquivos CAB
1.0.1804.18003
Esta versão inclui estas atualizações.
Status do símbolo e melhorias de cancelamento: há momentos em que o depurador exibe símbolos de carregamento BUSY e é difícil determinar o que ele está fazendo e por que sem estar o !sym noisy habilitado. Atualizamos o WinDbg Preview para ter uma comunicação melhor sobre o que ele está fazendo ao carregar símbolos para ajudar a solucionar problemas. Além de ver facilmente exatamente o que está acontecendo, fizemos algumas alterações que devem tornar o cancelamento de símbolos mais confiável e a janela Logs conterá alguns dos detalhes que normalmente são gerados quando !sym noisy está habilitado. Se você clicar em Visualização:> Logs, obterá a saída completa de carregamento de símbolos ruidosos sem precisar ativá-la e tentar recarregar os símbolos.
Janela de anotações experimentais: o WinDbg Preview agora tem uma janela para fazer anotações. Basta clicar em Visualização:> "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. Você também pode salvar e carregar arquivos de notas da faixa de opções "Notas" quando a janela estiver aberta.
Janela de origem experimental mais rápida: para ajudar a melhorar o desempenho do WinDbg Preview, há uma nova janela de origem experimental que é um pouco mais eficiente. Ainda há algumas lacunas em relação aos menus de contexto e ao realce de sintaxe, mas queremos dar a todos a opção de experimentá-lo antes de ser concluído para nos dar um feedback antecipado. Execute $UseFastSourceWindow para usá-lo. Se você quiser voltar ao antigo, execute $UseMonacoSourceWindow. A configuração será preservada entre as sessões, você precisará fechar e reabrir as janelas de código para obter a nova versão.
API JSProvider 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 sai do script terá um comparador personalizado (os operadores de comparação funcionarã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 (== 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, o que permite o acesso a qualquer comparador personalizado ou implementações de igualdade personalizadas.
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.
- O WinDbg Preview agora 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ê as interromper, ainda verá alguns resultados. Esse recurso ainda é experimental e opcional. Execute
dx $@cursession.TTD.AsyncQueryEnabled = 1
para habilitá-lo. - 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 você pode realçar todas as instâncias do texto selecionado diretamente no depurador. Para usar esse recurso, basta selecionar algum texto na janela de comando e, em seguida, selecionar "Realçar" na faixa de opções de comando ou pressionar CTRL+ALT+H. Usar um deles no texto já realçado removerá o realce.
Se preferir usar comandos, você pode usar o comando "$hl":
$hl ["someValueHere"]
: realce o texto dado (ou desfaça o realce se já estiver realçado)
$hl clearAll
: limpe todas as entradas realçadas
$hl caseSensitive [1|0]
: defina a correspondência de realce para diferenciar maiúsculas de minúsculas ou não diferenciar maiúsculas de minúsculas (o padrão é não diferenciar maiúsculas de minú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 você pode consultar TTD para acessos à memória de forma semelhante à forma como consulta chamadas hoje. Isso permite que você encontre todas as leituras, gravações e execuções que acessam um intervalo específico de memória.
Exemplo de leitura e gravação: dx $@cursession.TTD.Memory(startAddress, endAddress, "rw")
Exemplo exclusivo de execução: dx $@cursession.TTD.Memory(startAddress, endAddress, "ec")
Alterações de 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
- Os números de 64 bits e os números em JavaScript agora contêm um método de módulo que permite uma verdadeira operação de módulo de 64 bits.
- Objetos definidos em JavaScript agora podem implementar uma noção comparável ou igualável personalizada que funcionará em dx usando operadores C++ padrão ou em operações LINQ. Para utilizar, 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 feito, você poderá usar essas funções em qualquer consulta LINQ "dx" ou do modelo de dados da janela. Se o método implementar .compareTo(other), ele será comparável (os operadores de comparação funcionam em dx e LINQ). Se o método retornar um valor negativo, como "this < other". Se o método retornar zero, "this == other". Se o método retornar um valor positivo "this > other". Se o método implementar .equals(other), ele é igualá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 as janelas de pilha e locais não funcionavam durante a depuração de inicialização
- Atualização da saída do LM para relatar com mais precisão ProductVersion e campos semelhantes
- Habilitado o botão "sair e voltar" durante as sessões de TTD
- Adicionado suporte para -lsrcpath
- Os cabeçalhos nas janelas locais, de inspeção e de modelo agora não desaparecem ao rolar para baixo
- Quando ALT+Tab voltar para o WinDbg Preview, a janela de comando preservará corretamente a localização do cursor
- Adicionado atalho CTRL+ALT+V para alternar o modo detalhado
- Agora você pode desabilitar a rolagem automática da janela de comando selecionando e segurando (ou clicando com o botão direito do mouse) na guia da janela de comando e escolhendo "desabilitar rolagem automática"
- Agora você pode depurar processos filho por meio 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 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 Visualização: há uma nova opção "Layouts" na faixa de opções "Visualização". Atualmente, existem três layouts: o padrão, um focado na desmontagem e um mínimo.
Faixa de opções de Depuração de Viagem no Tempo: há uma faixa de opções de Viagem no Tempo aprimorada que aparecerá ao depurar um rastreamento de depuração de viagem no tempo.
Metadados de scripts JavaScript: as extensões JavaScript agora podem retornar metadados para propriedades e outras construções. Isso significa que a extensão pode fornecer cadeias de caracteres 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 por meio de host.metadata.valueWithMetadata.
Atualizações da API JavaScript: algumas alterações potencialmente significativas no nível do código-fonte foram feitas nas APIs dentro do provedor JavaScript (incluindo novos métodos e propriedades projetados em objetos nativos). As extensões existentes não verão nenhuma das alterações potencialmente significativas sem indicar que elas dão suporte a uma nova versão da API JsProvider. O suporte para a nova versão da API é indicado pela colocação de 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 versão 1.1 da API incluem:
- host.getModuleSymbol e host.getModuleType retornarão 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 do endereço 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 as propriedades do objeto que podem entrar em conflito com os nomes que o JavaScript coloca no objeto, como por exemplo, "endereço".
Alterações adicionais no 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 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 nos números JavaScript.
- As funções e propriedades JavaScript agora podem retornar valores que são enumerações por meio de marshaling personalizado. Um acessador de função ou propriedade pode retornar host.typeSystem.marshalAs(value, type...) para evocar esse marshaling personalizado.
- O comando de ponto de interrupção no depurador de script agora pode ser interrompido em nomes de função, além de posições de linha e coluna.
- Os objetos de tipo em extensões JavaScript têm acesso ao módulo que os contém por meio da propriedade .containingModule.
Pequenas alterações e correções de bugs:
- Corrigida a formatação de guias condicionais da faixa de opções para serem menos confusas.
- DML reformulado para ser mais rigoroso na análise e melhorar o desempenho.
- Várias correções com o desempenho e o comportamento de CTRL+F.
- Adicionado um aviso ao executar sem elevação antes de tentar usar o TTD.
- Adicionada a opção de substituir a detecção automática de bits de destino.
- Foram desabilitadas várias opções do menu Arquivo e da faixa de opções quando não podem ser usadas (como "Ir" em um arquivo de despejo).
Problemas conhecidos:
- O SOS não funcionará em rastreamentos x86.
1.0.13.0
Esta versão adiciona o rastreamento de viagem no tempo. A depuração de viagem no tempo, permite gravar um processo e reproduzi-lo mais tarde, tanto para frente quanto para trás. A TTD (Depuração de Viagem no Tempo) pode ajudá-lo a depurar problemas com mais facilidade, permitindo que você "retroceda" sua sessão do depurador, em vez de ter que reproduzir o problema até encontrar o bug. Para obter mais informações, consulte a 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.