.reload (Módulo de recarregamento)
O comando .reload exclui todas as informações de símbolo para o módulo especificado e recarrega esses símbolos conforme a necessidade. Em alguns casos, esse comando também recarrega ou descarrega o próprio módulo.
.reload [Options] [Module[=Address[,Size[,Timestamp]]]]
.reload -?
Parâmetros
Options Qualquer uma das seguintes opções:
/d
Recarregue todos os módulos na lista de módulos do depurador. (Quando você omite todos os parâmetros, essa situação é o padrão durante a depuração no modo de usuário.)
/f
Força o depurador a carregar os símbolos imediatamente. Esse parâmetro substitui o carregamento lento de símbolos. Para obter mais informações, consulte a seção Comentários a seguir.
/i
Ignora uma incompatibilidade nas versões do arquivo .pdb. (Se você não incluir esse parâmetro, o depurador não carregará arquivos de símbolos incompatíveis.) Quando você usa /i, /f também é usado, mesmo que você não o especifique explicitamente.
/l
Lista os módulos, mas não recarrega seus símbolos. (No modo kernel, esse parâmetro fornece saída semelhante ao comando lm.)
/n
Recarrega apenas símbolos do kernel. Esse parâmetro não recarrega símbolos de usuário. (Você pode usar essa opção somente durante a depuração no modo kernel.)
/o
Força os arquivos armazenados em cache no armazenamento downstream de um servidor de símbolos a serem substituídos. Ao usar esse sinalizador, você também deve incluir /f. Por padrão, os arquivos de armazenamento downstream nunca são substituídos.
Como o servidor de símbolos usa nomes de arquivo distintos para os símbolos de cada compilação diferente de um binário, você não precisa usar essa opção, a menos que acredite que seu armazenamento downstream tenha sido corrompido.
/s
Recarrega todos os módulos na lista de imagens do módulo do sistema. (Quando você omite todos os parâmetros, essa situação é o padrão durante a depuração no modo kernel.)
Se estiver carregando um módulo de sistema individual por nome enquanto executa a depuração no modo de usuário, você deverá incluir /s.
/u
Descarrega o módulo especificado e todos os seus símbolos. O depurador descarrega qualquer módulo carregado cujo nome corresponda a Module, independentemente do caminho completo. Os nomes das imagens também são pesquisados. Para obter mais informações, confira a observação na seção Comentários a seguir.
/unl
Recarrega símbolos com base nas informações da imagem na lista de módulos descarregados.
/user
Recarrega apenas símbolos de usuário. (Você pode usar essa opção somente durante a depuração no modo kernel.)
/v
Ativa o modo detalhado.
/w
Trata Module como uma cadeia de caracteres literal. Esse tratamento impede que o depurador expanda caracteres curinga.
Módulo
Especifica o nome de uma imagem no sistema de destino para a qual recarregar símbolos no computador host. Module deve incluir o nome e a extensão de nome do arquivo. A menos que você use a opção /w, Module pode conter vários caracteres curinga e especificadores. Para obter mais informações sobre a sintaxe, confira Sintaxe do curinga da cadeia de caracteres. Se você omitir Module, o comportamento do comando .reload dependerá de quais Options serão usados.
Endereço
Especifica o endereço base do módulo. Normalmente, você precisará ter esse endereço somente se o cabeçalho da imagem tiver sido corrompido ou estiver paginado.
Tamanho
Especifica o tamanho da imagem do módulo. Em muitas situações, o depurador sabe o tamanho correto do módulo. Quando o depurador não souber o tamanho correto, você deverá especificar Size. Esse tamanho pode ser o tamanho real do módulo ou um número maior, mas o tamanho não deve ser um número menor. Normalmente, você precisará ter esse tamanho somente se o cabeçalho da imagem tiver sido corrompido ou estiver paginado.
Timestamp
Especifica o carimbo de data/hora da imagem do módulo. Em muitas situações, o depurador sabe o carimbo de data/hora correto do módulo. Quando o depurador não souber os carimbos de data/hora, você deverá especificar Timestamp. Normalmente, você precisará ter esse carimbo de data/hora somente se o cabeçalho da imagem tiver sido corrompido ou estiver paginado.
Observação Não deve haver espaço em branco entre os parâmetros Address, Size e Timestamp.
-?
Exibe um breve texto de ajuda para esse comando.
Ambiente
Item | Descrição |
---|---|
Modos | Modo de usuário, modo kernel |
Destinos | Ao vivo, despejo de memória |
Plataformas | Tudo |
Informações Adicionais
Para obter mais informações sobre o carregamento de símbolos adiado (lento), confira Carregamento de símbolos adiado. Para obter mais informações sobre outras opções de símbolo, confira Definindo opções de símbolo.
Comentários
O comando .reload não faz com que as informações do símbolo sejam lidas. Em vez disso, esse comando permite que o depurador saiba que os arquivos de símbolo podem ter sido alterados ou que um novo módulo deve ser adicionado à lista de módulos. Esse comando faz com que o depurador revise sua lista de módulos e exclua suas informações de símbolo para os módulos especificados. As informações de símbolo reais não são lidas nos arquivos .pdb individuais até que sejam necessárias. (Esse tipo de carregamento é conhecido como carregamento de símbolo lento ou carregamento de símbolo adiado.)
Você pode forçar o carregamento de símbolos usando a opção /f ou emitindo um comando ld (Carregar Símbolos).
O comando .reload será útil se o sistema parar de responder (ou seja, falhar), o que pode fazer com que você perca símbolos para o computador de destino que está sendo depurado. O comando também pode ser útil se você tiver atualizado a árvore de símbolos.
Se o cabeçalho da imagem estiver incorreto por algum motivo, por exemplo, o módulo está sendo descarregado ou está paginado, você poderá carregar símbolos corretamente usando o argumento /unl ou especificando Address e Size.
O comando .reload /u executa uma pesquisa ampla. O depurador primeiro tenta corresponder Module com um nome de módulo exato, independentemente do caminho. Se o depurador não conseguir localizar essa correspondência, Module será tratado como o nome da imagem carregada. Por exemplo, se o HAL que reside na memória tiver o nome de módulo halacpi.dll, ambos os comandos a seguir descarregarão seus símbolos.
kd> .reload /u halacpi.dll
kd> .reload /u hal
Se você estiver executando a depuração no modo de usuário e desejar carregar um módulo que não faz parte da lista de módulos do aplicativo de destino, será preciso incluir a opção /s, como mostra o exemplo a seguir.
0:000> .reload /u ntdll.dll
Unloaded ntdll.dll
0:000> .reload /s /f ntdll.dll