IT STORYs

ProcessExplorer를 이용한 Troubleshooting 본문

기타

ProcessExplorer를 이용한 Troubleshooting

295~ 2008. 3. 5. 09:04

ProcessExplorer 다운로드

[문제내용]

IE에서 특정 사이트에 접속한 뒤 IE를 다른 URL로 이동하거나 종료버튼을 누르면 IE에서 프로그램 응답 없음(Hang) 상태가 발생한다.

clip_image002

그림. 응답 없는 Internet Explorer

[해결과정]

위와 같은 문제 상황에서 가정을 세워 봅니다

‘IE는 문제가 없다, 그렇다면 IE 실행 시 환경적인 요인이 IE에 문제를 일으키는 것은 아닐까?’

대부분 IE에서 문제가 발생하는 원인이 ActiveX혹은 툴바(Tool bar)같은 3’rd party 제품이 IE에 붙어 실행되면서 나타나므로 문제 사이트에 접속했을 때 어떤 것들이 IE와 함께 로드 되는지를 확인 하고 그것을 Disable하여 문제가 발생하는지 확인 합니다. 특정 컴포넌트를 Disable하고 문제가 재발하지 않았다면 해당 컴포넌트의 문제 가능성이 높습니다.

여기서 핵심은 ProcessExplorer을 이용해 문제가 발생했을 때 어떤 컴포넌트(DLL)이 로드 되었는지 확인 하는 것입니다

그럼 한번 제 컴퓨터에서 문제를 일으키는 그것(?)을 찾아보도록 합시다.

1) 먼저 ProcessExplorer로 실행하고 IE 실행 시 로드 되는 DLL을 확인 하기 위해서 그림에서와 같이 View를 설정합니다. 그러면 하단에 해당 Process 실행시 로드되는 DLL을 확인 할 수 있습니다.

clip_image004

그림 1. ProcessExplorer에서 환경 설정

2) 문제 상태와 정상 상태에서 로드 되는 Process와 DLL을 비교 하기 위해 IE에서 정상일 때 로드 되는 Process와 DLL 리스트를 저장합니다.

a. IE를 실행합니다.

b. 상단 panel에서 iexplorer.exe를 선택합니다.

c. File > Save As로 화면에 나타난 리스트를 저장합니다. (예. 1.txt)

clip_image006

그림 2. 문제 발생 전 상태

3) 이제 IE에서 문제의 사이트로 이동해 로드되는 로드 되는 Process와 DLL 리스트를 저장합니다.

a. 문제 사이트로 이동시 하단에 새로 로드 되는 DLL이 잠깐 하이라이트 되어 나타납니다, 이것들이 이 문제를 일으키는 주범일 가능성이 높습니다.

b. File > Save As로 화면에 나타난 리스트를 저장합니다. (예. 2.txt)

c. 문제가 발생하는지 닫기 혹은 다른 사이트로 이동해 봅니다.

clip_image008

그림 3. 문제 사이트에서 로드 되는 DLL들

4) 문제 전/후에 로드 된 DLL을 비교하여 어떤 DLL이 문제를 일으켰는지 추정합니다, 텍스트 내용을 눈 빠져라 비교할 수도 있지만 windiff.exe라는 도구를 이용하면 쉽게 텍스트간의 차이점을 확인 할 수 있습니다.

a. Windows 설치 CD에 있는 Windows Support라는 폴더에서 Windows support tool을 설치하면 windiff를 사용할 수 있습니다.

b. Windiff.exe를 실행하고 File > Compare Files를 실행합니다.

c. Select First File에서는 Step3번에서 저장한 1.txt파일을 선택하고 Select Second File에서는 Step4에서 저장한 2.txt파일을 선택합니다.

d. 그림에서와 같이 두 파일 텍스트 간에 서로 다른 내용을 확인 할 수 있습니다(노란색으로 표시되는 부분). Windiff에서 보면 두번째 텍스트 파일에 처음 문제 발생전과 다른 새로운 BGM.DLL이 로드 됨을 확인 할 수 있습니다.

clip_image010

그림 4. Windiff로 확인한 IE에 로드된 DLL

5) BGM.DLL이 어떤 파일인지 알기 위해 파일 속성을 확인 할 수도 있고 그림에서와 같이 string을 확인하는 방법이 있습니다.

a. ProcessExplorer의 하단에서 BGM.DLL를 더블 클릭합니다.

b. Strings 탭으로 이동합니다.

c. DLL 내부에 있는 String 중에 어떤 ActiveX인지를 알 수 있는 문자를 확인 할 수 있습니다.

clip_image011

그림 5. String 내용

6) IE에서 BMGCtrl이라는 ActiveX를 Disable 합니다.

a. IE > 도구 > 인터넷옵션 > 프로그램 > 추가 기능 관리

b. String에서 확인 했던 BGMCtrl Clasee가 보입니다. 이것을 선택 합니다.

c. 하단에 ‘사용 안 함’을 선택한 뒤에 ‘확인’을 클릭합니다.

d. IE를 재 시작 한 후에 문제가 발생하지 않음을 확인 합니다.

clip_image013

그림 6. IE에서 해당 ActiveX를 Disable

사실 위와 같은 경우는 꼭 해당 ActiveX 만의 문재라기 보다는 또 다른 변수와 복합된 문제의 가능성이 있습니다, 그러나 처음 말씀 드렸듯이 ProcessExplorer의 예제를 보여드리기 위함임을 다시 한번 말씀 드립니다.

Comments