Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O DTrace fornece um recurso para capturar um dump em tempo real a partir do D-script usando lkd(). Os arquivos de despejo de memória são usados para depurar problemas complexos no Windows usando o Depurador do Windows. Para obter mais informações, consulte Analisar ficheiros de crash dump utilizando o WinDbg. Para baixar o depurador, consulte Baixar e instalar o depurador WinDbg do Windows.
O despejo ao vivo do DTrace fornece a capacidade de acionar o despejo no ponto exato onde o erro ocorreu. Por exemplo, o erro pode ser uma função que retorna um erro. Você pode usar o DTrace para se conectar a essa função return e acionar um live dump quando o valor de retorno for "error".
Observação
O DTrace é suportado nas builds do programa Insider do Windows após a versão 18980 e na build do Windows Server 18975.
Para obter informações gerais sobre como trabalhar com o DTrace no Windows, consulte DTrace.
Uso do DTrace Live Dump
Uso: lkd (parâmetro);
As opções a seguir podem ser configuradas para alterar que informações são incluídas no mini dump ao vivo.
0x0 - Despejo completo do kernel (valor padrão)
0x1 - Páginas de usuário + páginas do kernel (funciona apenas com KD attach)
0x2 - Minidump
0x4 - Hyper-V páginas + páginas do Kernel)
0x5 - Páginas de usuário, kernel e hipervisor.
Código de exemplo de despejo ao vivo
#pragma D option destructive
inline uint32_t STATUS_UNSUCCESSFUL = 0xc0000001UL;
syscall:::return
{
this->status = (uint32_t)arg0;
if (this->status == STATUS_UNSUCCESSFUL)
{
printf ("Return value arg0:%x \n", this->status);
printf ("Triggering LiveDump \n");
lkd(0);
exit(0);
}
}
Salve o arquivo como livedumpstatuscheck.d.
Abra um prompt de comando como administrador e execute o script usando a opção -s.
C:\Windows\System32>dtrace -s livedumpstatuscheck.d
dtrace: script 'livedumpstatuscheck.d' matched 1881 probes
dtrace: allowing destructive actions
CPU ID FUNCTION:NAME
0 93 NtAlpcSendWaitReceivePort:return Return value arg0:c0000001
Triggering LiveDump
O arquivo de despejo criado normalmente está localizado em C:\Windows\LiveKernelReports.
Se o local do arquivo de despejo tiver sido alterado, o valor será armazenado nesta chave do Registro: hklm\system\currentcontrolset\control\crashcontrol\livekernelreports
Use o WinDbg para trabalhar com um arquivo de despejo conforme descrito acima.
Solução de problemas
Visualizando eventos relacionados com o despejo em tempo real
Abra o Visualizador de Eventos do Windows: Vá para: Logs de Aplicações e Serviços->Microsoft->Windows->Kernel-Livedump->Operational
Se você não encontrou nenhum log, habilite o canal analítico no prompt de comando ou no visualizador de eventos, conforme descrito abaixo.
Ativar canal analítico a partir do prompt de comando
Utilize este comando para habilitar o canal analítico a partir de um prompt de comandos com privilégios de administrador.
wevtutil sl Microsoft-Windows-Kernel-LiveDump/Analytic /e:true
Habilitar o canal analítico usando o Visualizador de Eventos
Iniciar o Visualizador de Eventos do Windows
Clique em Exibir e marque "Mostrar logs analíticos e de depuração". Isso mostrará o canal analítico para livedump.
Clique com o botão direito do rato e ative o Microsoft-Windows-Kernel-LiveDump/Analytic.
Habilitando despejos em tempo real completos
A seguir, estas definições de exemplo mostram a definição do número máximo de despejos completos em tempo real que podem estar no disco a qualquer momento para 10 e armazenam os despejos de memória completos, não apenas um mini despejo.
reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v FullLiveReportsMax /d 10
reg add "HKLM\System\CurrentControlSet\Control\CrashControl" /f /t REG_DWORD /v AlwaysKeepMemoryDump /d 1
Para obter mais informações sobre essas configurações, consulte Configurações do WER.
Desativar a limitação
A limitação de velocidade é um recurso que impede que o sistema de dumps e logs afete o uso normal do Windows. Esse recurso pode interferir na criação de live dumps em determinados ambientes com restrição de recursos.
Verifique as configurações do acelerador de despejo ao vivo e, se necessário, tente novamente desativando a limitação definindo as teclas SystemThrottleThreshold e ComponentThrottleThreshold como zero, conforme mostrado aqui.
reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v SystemThrottleThreshold /d 0
reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v ComponentThrottleThreshold /d 0
Problemas de espaço em disco (ID do Evento 202 -Error Texto: a API de escrita de despejo ao vivo de dados adiados foi encerrada. Estado NT: 0xC000007F.)
Isso significa que o espaço em disco é insuficiente. Atualize a chave do Registro mostrada abaixo para alterar o caminho para a criação de despejo em tempo real, neste exemplo, para a unidade d: que tem espaço de armazenamento adicional disponível.
reg add hklm\system\currentcontrolset\control\crashcontrol\livekernelreports /v "LiveKernelReportsPath" /t reg_sz /d "\??\d:\livedumps"
Este comando define o caminho raiz do despejo ao vivo como d:\livedumps (como um exemplo).
Não crie manualmente a pasta, pois ela é gerenciada pelo sistema operacional e será criada quando o despejo for acionado com as permissões adequadas.