Analisando um arquivo de despejo no modo de usuário

Este tópico inclui:

Analisando um arquivo de despejo no modo de usuário com o WinDbg

Os arquivos de despejo de memória do modo de usuário podem ser analisados pelo WinDbg. O processador ou a versão do Windows em que o arquivo de despejo foi criado não precisa corresponder à plataforma na qual o WinDbg está sendo executado.

Instalando arquivos de símbolo

Antes de analisar o arquivo de despejo de memória, você precisará acessar os arquivos de símbolo da versão do Windows que gerou o arquivo de despejo. Esses arquivos serão usados pelo depurador que você escolher usar para analisar o arquivo de despejo. Para obter informações sobre como trabalhar com o servidor de símbolos, consulte Símbolos Públicos da Microsoft.

Você também precisará instalar todos os arquivos de símbolo para o processo de modo de usuário, seja um aplicativo ou serviço do sistema, que fez com que o sistema gerasse o arquivo de despejo. Se esse código foi escrito por você, os arquivos de símbolo devem ter sido gerados quando o código foi compilado e vinculado. Se este for um código comercial, verifique o CD-ROM do produto ou entre em contato com o fabricante do software para obter esses arquivos de símbolo específicos.

Iniciando o WinDbg

Para analisar um arquivo de despejo, inicie o WinDbg com a opção de linha de comando -z :

windbg -y SymbolPath -i ImagePath -z DumpFileName

A opção -v (modo detalhado) também é útil. Para obter uma lista completa de opções, consulte Opções de linha de comando do WinDbg.

Se o WinDbg já estiver em execução e estiver no modo inativo, você poderá abrir um despejo de memória selecionando o arquivo Arquivo | Abra o comando de menu Crash Dump ou pressione a tecla de atalho CTRL+D. Quando a caixa de diálogo Abrir Despejo de Memória for exibida, insira o caminho completo e o nome do arquivo de despejo de memória na caixa de texto Nome do arquivo ou use a caixa de diálogo para selecionar o caminho e o nome do arquivo adequados. Quando o arquivo apropriado tiver sido escolhido, selecione Abrir.

Você também pode abrir um arquivo de despejo depois que o depurador estiver em execução usando o comando .opendump (Abrir Arquivo de Despejo), seguido de g (Ir).

É possível depurar vários arquivos de despejo ao mesmo tempo. Isso pode ser feito incluindo várias opções -z na linha de comando (cada uma seguida por um nome de arquivo diferente) ou usando .opendump para adicionar arquivos de despejo adicionais como destinos do depurador. Para obter informações sobre como controlar uma sessão de vários destinos, consulte Depurando vários destinos.

Os arquivos de despejo geralmente terminam com a extensão .dmp ou .mdmp. Você pode usar compartilhamentos de rede ou nomes de arquivo UNC (Convenção de Nomenclatura Universal) para o arquivo de despejo de memória.

Também é comum que os arquivos de despejo sejam compactados em um arquivo CAB. Se você especificar o nome do arquivo (incluindo a extensão .cab) após a opção -z ou como o argumento para um comando .opendump , o depurador poderá ler os arquivos de despejo diretamente do CAB. No entanto, se houver vários arquivos de despejo armazenados em um único CAB, o depurador só poderá ler um deles. O depurador não lerá nenhum arquivo adicional do CAB, mesmo que sejam arquivos de símbolo ou executáveis associados ao arquivo de despejo.

Analisando um arquivo de despejo completo do usuário

A análise de um arquivo de despejo de usuário completo é semelhante à análise de uma sessão de depuração ao vivo. Consulte a seção de referência Comandos do Depurador para obter detalhes sobre quais comandos estão disponíveis para depurar arquivos de despejo no modo de usuário.

Analisando arquivos de minidespejo

A análise de um arquivo de minidespejo no modo de usuário é feita da mesma forma que um despejo de usuário completo. No entanto, como muito menos memória foi preservada, você está muito mais limitado nas ações que pode executar. Os comandos que tentam acessar a memória além do que é preservado no arquivo de minidespejo não funcionarão corretamente.

Técnicas adicionais

Para técnicas que podem ser usadas para ler tipos específicos de informações de um arquivo de despejo, consulte Extraindo informações de um arquivo de despejo.

Analisando um arquivo de despejo no modo de usuário com CDB

Os arquivos de despejo de memória do modo de usuário podem ser analisados pelo CDB. O processador ou a versão do Windows em que o arquivo de despejo foi criado não precisa corresponder à plataforma na qual o CDB está sendo executado.

Instalando arquivos de símbolo

Antes de analisar o arquivo de despejo de memória, você precisará acessar os arquivos de símbolo da versão do Windows que gerou o arquivo de despejo. Esses arquivos serão usados pelo depurador que você escolher usar para analisar o arquivo de despejo. Para obter informações sobre como trabalhar com o servidor de símbolos, consulte Símbolos Públicos da Microsoft.

Você também precisará instalar todos os arquivos de símbolo para o processo de modo de usuário, seja um aplicativo ou serviço do sistema, que fez com que o sistema gerasse o arquivo de despejo. Se esse código foi escrito por você, os arquivos de símbolo devem ter sido gerados quando o código foi compilado e vinculado. Se este for um código comercial, verifique o CD-ROM do produto ou entre em contato com o fabricante do software para obter esses arquivos de símbolo específicos.

Iniciando o CDB

Para analisar um arquivo de despejo, inicie o CDB com a opção de linha de comando -z :

cdb -y SymbolPath -i ImagePath -z DumpFileName

A opção -v (modo detalhado) também é útil. Para obter uma lista completa de opções, consulte Opções de linha de comando do CDB.

Você também pode abrir um arquivo de despejo depois que o depurador estiver em execução usando o comando .opendump (Abrir Arquivo de Despejo), seguido de g (Ir). Isso permite depurar vários arquivos de despejo ao mesmo tempo.

É possível depurar vários arquivos de despejo ao mesmo tempo. Isso pode ser feito incluindo várias opções -z na linha de comando (cada uma seguida por um nome de arquivo diferente) ou usando .opendump para adicionar arquivos de despejo adicionais como destinos do depurador. Para obter informações sobre como controlar uma sessão de vários destinos, consulte Depurando vários destinos.

Os arquivos de despejo geralmente terminam com a extensão .dmp ou .mdmp. Você pode usar compartilhamentos de rede ou nomes de arquivo UNC (Convenção de Nomenclatura Universal) para o arquivo de despejo de memória.

Também é comum que os arquivos de despejo sejam compactados em um arquivo CAB. Se você especificar o nome do arquivo (incluindo a extensão .cab) após a opção -z ou como o argumento para um comando .opendump , o depurador poderá ler os arquivos de despejo diretamente do CAB. No entanto, se houver vários arquivos de despejo armazenados em um único CAB, o depurador só poderá ler um deles. O depurador não lerá nenhum arquivo adicional do CAB, mesmo que sejam arquivos de símbolo ou executáveis associados ao arquivo de despejo.

Analisando um arquivo de despejo completo do usuário

A análise de um arquivo de despejo de usuário completo é semelhante à análise de uma sessão de depuração ao vivo. Consulte a seção de referência Comandos do Depurador para obter detalhes sobre quais comandos estão disponíveis para depurar arquivos de despejo no modo de usuário.

Analisando arquivos de minidespejo

A análise de um arquivo de minidespejo no modo de usuário é feita da mesma forma que um despejo de usuário completo. No entanto, como muito menos memória foi preservada, você está muito mais limitado nas ações que pode executar. Os comandos que tentam acessar a memória além do que é preservado no arquivo de minidespejo não funcionarão corretamente.

Técnicas adicionais

Para técnicas que podem ser usadas para ler tipos específicos de informações de um arquivo de despejo, consulte Extraindo informações de um arquivo de despejo.