Como eu iria sobre tirar um instantâneo de um processo para preservar seu estado para a investigação futura? Isso é possível?
Pergunta
Se isto é possível, eu não sei, mas seria poderoso útil!
Eu tenho um processo que falha periodicamente (em execução no Windows 2000). Em seguida, tenho apenas uma chance de reagir a ela antes de ter que reiniciá-lo e dolorosamente esperar por ele para falhar novamente. Eu não escrevi o processo por isso não tem a fonte de depurar. A falha é aparentemente aleatória.
Com um instantâneo do processo que pude reações teste repetidamente e rapidamente para o fracasso.
Eu tinha pensado em execução dentro de uma máquina virtual, mas isso não é possível neste caso.
EDIT: @ Jon gaiola perguntou:
Quando você diz que um instantâneo, você quer dizer capturar um processo quando ele está prestes a falhar (incluindo memória, estado do programa etc. etc.) ... e, em seguida, repetindo que é finais alguns segundos várias vezes para ver o efeito que tem sobre algum outro componente?
Este é exatamente o que quero dizer!
Solução
minidump é o que você está procurando.
Você também pode utilizar Userdump :
O User Mode Process Dumper (Userdump) despeja qualquer Win32 executando imagem de memória (incluindo processos sistema processa tais como csrss.exe, winlogon.exe, services.exe, etc) em a mosca, sem anexar um depurador, ou encerra processos alvo. arquivo de despejo gerado pode ser analisado ou depurado usando o padrão ferramentas de depuração.
Este artigo mostra como usá-lo.
Outras dicas
Meu melhor aposta é a de iniciar o processo em um depurador ( OllyDbg ser meu instrumento preferido). O processo irá parar em uma exceção, e você pode tentar descobrir o que aconteceu pouco antes disso.
Isso precisa alguma compreensão do montador e não permite para criar um instantâneo do processo para análise posterior. Você precisaria escrever seu próprio depurador para isso -. Que deveria ser teoricamente possível