ProcessExplorer를 이용한 Troubleshooting


이전 포스트에 이어 무엇으로 ProcessExplorer을 이용한 Troubleshooting을 보여드릴까 고심 하던 중 제 Laptop에서 ProcessExplorer를 사용해 문제해결을 한 예가 있어 여러분들께 보여 드릴까 합니다. 한가지 말씀드릴 것은 여기서 말씀 드리는 방법은 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의 예제를 보여드리기 위함임을 다시 한번 말씀 드립니다.
이번 포스트에서 설명 드린 방법 이외에도 ProcessExplorer을 이용할 수 있는 방법은 무궁무진 합니다. 다음에도 제 Laptop에 ProcessExplorer의 도움이 필요한 문제가 생기면 또 한번 포스트 해보도록 하겠습니다. ^^
Comments (3)

  1. Anonymous says:

    IE를 실행하다가 Hang이 걸리거나 Crash가 되면 문제를 찾는 방법이 쉽지 않습니다. 문제 해결을위해 이전에 포스팅한 ProcessExplorer를 이용한 Troubleshooting

  2. 네 방문감사합니다 🙂

  3. 스따브로긴 says:

    좋은 정보 감사합니다.

Skip to main content