Arquivos de despejo no depurador do Visual Studio

Um arquivo de despejo é um instantâneo que mostra o processo que estava em execução e os módulos que foram carregados para um aplicativo em um ponto no tempo. Um despejo com informações de heap também inclui um instantâneo da memória do aplicativo nesse ponto.

Abrir um arquivo de despejo com um heap no Visual Studio é parecido com parar em um ponto de interrupção em uma sessão de depuração. Embora não seja possível continuar a execução, você pode examinar as pilhas, os threads e os valores das variáveis do aplicativo no momento do despejo.

Os despejos são usados principalmente para depurar problemas de computadores aos quais os desenvolvedores não têm acesso. Você pode usar um arquivo de despejo do computador de um cliente quando não é possível reproduzir um programa de falha ou sem resposta em seu próprio computador. Os testadores também criam despejos para salvar dados de programa sem resposta ou com falha a serem usados para mais testes.

O depurador do Visual Studio pode salvar arquivos de despejo para código gerenciado ou nativo. Isso pode depurar arquivos de despejo criados pelo Visual Studio ou por outros aplicativos que salvam arquivos no formato minidump.

Requisitos e limitações

  • Para depurar arquivos de despejo de computadores de 64 bits, o Visual Studio deve estar em execução em um computador de 64 bits.
  • O Visual Studio pode depurar arquivos de despejo de aplicativos gerenciados do sistema operacional Linux.
  • O Visual Studio pode depurar arquivos de despejo de aplicativos nativos em dispositivos ARM. Ele também pode depurar arquivos de despejo de aplicativos gerenciados em dispositivos ARM, mas somente no depurador nativo.
  • Para depurar arquivos de despejo no modo kernel ou usar a extensão de depuração SOS.dll no Visual Studio, baixe as ferramentas de depuração para Windows no WDK (Kit de Driver do Windows).
  • O Visual Studio não pode depurar arquivos de despejo salvos no formato antigo full user-mode dump. Um despejo completo do modo de usuário não é igual a um despejo com heap.
  • Depurar arquivos de despejo de código otimizado pode ser confuso. Por exemplo, as funções embutidas do compilador podem resultar em pilhas de chamadas inesperadas, e outras otimizações podem alterar o tempo de vida de variáveis.

Arquivos de despejo com ou sem heaps

Arquivos de despejo podem ou não ter informações de heap.

  • Arquivos de despejo com heaps contêm um instantâneo da memória do aplicativo, incluindo os valores das variáveis, no momento do despejo. O Visual Studio também salva os binários de módulos nativos carregados em um arquivo de despejo com um heap, o que pode facilitar muito a depuração. O Visual Studio pode carregar símbolos de um arquivo de despejo com um heap, mesmo que não encontre um binário de aplicativo.

  • Os arquivos de despejo sem heaps são muito menores do que despejos com heaps, mas o depurador deve carregar os binários do aplicativo para localizar informações de símbolo. Os binários carregados devem corresponder exatamente aos executados durante a criação do despejo. Arquivos de despejo sem heaps salvam apenas os valores das variáveis de pilha.

Criar um arquivo de despejo

Enquanto você estiver depurando um processo no Visual Studio, será possível salvar um arquivo de despejo quando o depurador parar em uma exceção ou no ponto de interrupção.

Com aDepuração Just-In-Time habilitada, você pode anexar o depurador do Visual Studio a um processo com falha fora do Visual Studio e salvar um arquivo de despejo do depurador. Consulte Anexar a processos em execução.

Para salvar um arquivo de despejo:

  1. Enquanto estiver parado em um erro ou ponto de interrupção durante a depuração, selecione Depurar>Salvar Despejo como.

  2. Na caixa de diálogo Salvar despejo como, em Salvar como tupo, selecione Minidump ou Minidump com Heap (o padrão).

  3. Navegue até um caminho, selecione um nome para o arquivo de despejo e selecione Salvar.

Observação

Você pode criar arquivos de despejo com qualquer programa que ofereça suporte ao formato de minidespejo do Windows. Por exemplo, o utilitário de linha de comando Procdump do Windows Sysinternals pode criar arquivos de despejo de memória do processo com base em gatilhos ou sob demanda. Consulte Requisitos e limitações para obter mais informações sobre como usar outras ferramentas para criar arquivos de despejo.

{1>Abrir um arquivo de despejo<1}

  1. No Visual Studio, selecione Arquivo>Abrir>Arquivo.

  2. Na caixa de diálogo Abrir Arquivo, localize e selecione o arquivo de despejo. Geralmente, ele terá uma extensão .dmp. Selecione OK.

    A janela Resumo do Arquivo de Minidump mostra informações de resumo e módulo para o arquivo de despejo e ações que você pode executar.

    Screenshot showing Minidump summary page.

  3. Em Ações:

    • Para definir locais de carregamento de símbolos, selecione Definir caminhos de símbolo.
    • Para iniciar a depuração, selecione Depurar com Somente Gerenciado, Depurar com Somente Nativo, Depurar com Misto ou Depurar com Memória Gerenciada.

Localizar .exe, .pdb e arquivos de origem

Para usar recursos completos de depuração em um arquivo de despejo, o Visual Studio precisa:

  • O arquivo .exe para o qual o despejo foi criado e outros binários (como DLLs) usados pelo processo de despejo.
  • Arquivos de símbolo (.pdb) para o .exe e outros binários.
  • Os arquivos .exe e .pdb que correspondem exatamente à versão e ao build dos arquivos na criação do despejo.
  • Arquivos de origem para os módulos relevantes. Você pode usar a desmontagem dos módulos, se não for possível localizar os arquivos de origem.

Se o despejo tiver dados de heap, o Visual Studio poderá lidar com binários ausentes para alguns módulos, mas deverá ter binários para módulos suficientes de modo a gerar pilhas de chamadas válidas.

Pesquisar caminhos para arquivos de .exe

O Visual Studio pesquisa automaticamente esses locais em busca de arquivos .exe que não estão incluídos no arquivo de despejo:

  1. A pasta que contém o arquivo de despejo.
  2. O caminho do módulo especificado pelo arquivo de despejo, que é o caminho do módulo no computador que coletou o despejo.
  3. Os caminhos de símbolo especificados em Ferramentas (ou Depurar) >Opções>Depuração>Símbolos. Você também pode abrir a página Símbolos no painel Ações da janela Resumo do Arquivo de Despejo. Nessa página, você pode adicionar mais locais para pesquisa nessa página.

Usar as páginas Sem Binário, Sem Símbolos ou Nenhuma Fonte Encontrada

Se o Visual Studio não puder encontrar os arquivos necessários para depurar um módulo no despejo, ele exibirá uma página No Binary Found, No Symbols Found ou No Source Found Essas páginas fornecem informações detalhadas sobre a causa do problema e links de ação que podem ajudar a localizar os arquivos. Confira Especificar arquivos de símbolo (.pdb) e de origem.