2012-12-10 4 views
2

디버거가없는 컴퓨터에서 테스트 할 때 클라이언트의 컴퓨터라고하면 프로그램의 상태가 손상되었을 수 있지만 실제로 충돌하지는 않는 버그가 발생합니다. 실제로 메모리 덤프를 사용할 수 있다는 것을 알고 있습니다. Windows 작업 관리자 (프로세스 이름을 마우스 오른쪽 단추로 클릭하고 덤프 파일을 만듭니다).메모리 덤프 복원

이러한 것들을 WinDbg와 함께 메모리 등에서 들여다 볼 수는 있지만, 가장 유용한 것은 덤프를 메모리에 복원하여 프로그램과 계속 상호 작용할 수있게하는 것입니다. 이것이 가능한가? 그렇다면 어떻게? 그것을 복원 할 수있는 도구가 있습니까? 아니면 내 자신을 작성해야합니까?

+0

예 가능합니다. – m0skit0

+0

@ m0skit0 내 질문을 업데이트했습니다. 어떻게하는지 말해 줄 수 있어요? – 0xFE

+1

나는 당신이 사용하고있는 것처럼 보이는 Windows를 모른다. Linux의 경우 [this this] (http://lwn.net/Articles/342819/)를 선택하십시오. – m0skit0

답변

3

일반적인 usermode 덤프 또는 미니 덤프에는 충분한 정보가 포함되어 있지 않습니다. 메모리에 usermode 메모리가 모두 포함되어 있지만 커널 메모리가 포함되어 있지 않으므로 파일이나 네트워크 소켓과 같은 커널 리소스에 대한 열린 핸들은 덤프에 포함되지 않습니다 (하드 디스크가 변경되었을 가능성이 높습니다). 하드 디스크에 쓰면 시스템이 더 손상 될 수 있습니다.

메모리 덤프를 복원하는 유일한 방법은 전체 메모리와 하드 디스크 상태와 같은 다른 모든 상태를 복원하는 것입니다. 대부분의 가상 컴퓨터 소프트웨어에서 수행 할 수 있습니다 (그러나 복원시 네트워크 연결이 끊어집니다. 고맙게도 대부분의 프로그램은 손실 된 파일 처리보다 손실 된 네트워크 연결을 처리 할 수 ​​있습니다.

0

Hyper-V 스냅 샷으로이 작업을 수행 할 수 있음을 발견했습니다. 가상 시스템에서 프로그램을 실행하면 선택적으로 메모리를 덤프하고, 스냅 샷을 생성하고, 필요한 경우 덤프를 전송하고, 나중에 다시 돌아와서 스냅 샷을 복원하고 프로그램을 계속할 수 있습니다.