2011. 9. 29. 17:29

크래시 와 행


* 주요 덤프 형식 아래와 같이 3가지로 나눌수 있습니다.
 -> 컴플리트(Complete)
 -> 커널
 -> 유저



* 아래 그림은 어떻게 덤프가 저장되어지는지를 보여줍니다.  
(그림판 이용한 조잡한 그림1)



* 크래시란?
  이따금 연산을 수행하는 명령이나 데이터 읽기, 쓰기가 잘못되어 먹통이 되는경우가 있습니다. 앞에서 언급한 사항들이 목적지 주소로 갔는데 그 목적지 주소에 부합되는 것이 없다면.....

  잘못된 주소를 가지고 있을때 cpu는 트랩이라는 특별한 절차를 수행합니다. 트랩의 결과가 메모리에 저장되며, 나중에 내용을 조사하거나 잘못된 명령을 찾아낼 수 있습니다. 만약 크래시가 윈도우 운영체제에서 발생했다면 블루스크린이 나타납니다. 그리고 커널 메모리나 물리 메모리 전체가 파일에 저장됩니다.

이 파일이 각기 커널 메모리 덤프와 컴플리트 메모리 덤프라고 합니다. 실행중인 애플리케이션이나 서비스에서 크래시가 발생하면 그 메모리의 내용은 파일로 저장됩니다. 이것을 유저 덤프나, 포스트 모텀(postmortem) 덤프라하며, 이를 저장하는 프로그램을 포스트모덤 디버거라 합니다. 포스트모텀 디버거는 몆 가지가 있으며, 레지스트리에 명시되 애플리케이션이나 서비스에서 크래시가 발생할 때마다 실행되는 디폴트 포스트모텀 디버거라 합니다.
(좀 뒤죽박죽 내용이지만, 번역이 이렇게 되서그러니 이해하시길..)



* 행이란?
  행(Hang)을 분석할 때도 메모리 덤프가 필요합니다. 가끔 크래시의 직접적인 결과가 행으로 나타날 때가 있기 때문입니다.
하지만 대부분의 경우 독립적으로 발생합니다. 먼저 크래시가 발생하면 애플리케이션 또는 프로세서는 사라집니다. 그러나 행이 발생하면 애플리케이션, 프로세서는 여전히 메모리에 남아 있습니다. 작업 관리자에서 프로세서를 찾을 수는 있지만 사용자 명령이나 TCP/IP 프로토콜의 ping 같은 어떠한 요청에도 응답하지 않는 상태입니다.
 쉽게 말하자면, 크래시 발생시에는 운영체제에 "블루스크린"이 발생하고, 행이 발생하면 "다운"(정지 상태)이 됩니다.