Partilhar via


Depurando uma falha de User-Mode com KD

Para depurar corretamente falhas no modo de usuário, você precisa de CDB ou WinDbg. No entanto, às vezes, uma exceção de modo de usuário será dividida em KD porque nenhum depurador de modo de usuário está presente. Também há momentos em que é útil monitorar o que processos específicos do modo de usuário estão fazendo durante a depuração de um problema no modo kernel.

Por padrão, o depurador de kernel tenta carregar o primeiro símbolo de modo de usuário que corresponde ao endereço especificado (para um comando k, u ou ln ).

Infelizmente, símbolos de modo de usuário geralmente não são especificados no caminho do símbolo ou o primeiro símbolo não é o correto. Se os símbolos não estiverem lá, copie-os no caminho do símbolo ou use um comando .sympath (Definir Caminho do Símbolo) para apontar para a árvore de símbolos completa e, em seguida, use o comando .reload (Recarregar Módulo). Se o símbolo errado for carregado, você poderá carregar explicitamente um símbolo fazendo um .reload <binary.ext>.

A maioria das DLLs do Windows é rebasada para que elas sejam carregadas em endereços diferentes, mas há exceções. Os adaptadores de vídeo são as exceções mais comuns. Há dezenas de adaptadores de vídeo que são carregados no mesmo endereço base, portanto, o KD quase sempre encontrará ati.dll (o primeiro símbolo de vídeo, em ordem alfabética). Para vídeo, também há um arquivo .sys carregado que pode ser identificado usando o comando lm . Com essas informações, você pode emitir um .reload para obter as DLLs de vídeo corretas. Também há ocasiões em que o depurador fica confuso e recarregar símbolos específicos ajudará a fornecer a pilha correta. Desmonte as funções para ver se os símbolos parecem corretos.

Semelhante às DLLs de vídeo, quase todos os executáveis são carregados no mesmo endereço, portanto, o KD relatará o acesso. Se você vir um rastreamento de pilha no acesso, faça um !process e, em seguida, um .reload do nome executável fornecido. Se o executável não tiver símbolos no caminho do símbolo, copie-os lá e recarregue novamente.

Às vezes, KD ou WinDbg tem problemas para carregar os símbolos corretos do modo de usuário, mesmo quando a árvore de símbolos completa está no caminho do símbolo. Nesse caso, ntdll.dll e kernel32.dll são dois dos símbolos mais comuns que seriam necessários. No caso de depuração de CSRSS de KD, winsrv.dll e csrsrv.dll também são DLLs comuns a serem carregadas.