Process Explorer는 여러 모로 Application Troubleshooting에 유용한 툴이다. 개인적으로 경험상, High CPU나 DLL Injection에 대한 감시 등에 해당 Tool을 유용하게 사용하곤 했다.
일단, http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx 이곳에서 Process Explorer를 Download 받을 수 있다. 처음 실행하면, 상위와 같은 UI 화면을 확인 할 수 있는 데, View에서 Show Low Pane이 선택되어 있다면, 아래의 Pane을 확인할 수 있으며, 상위의 그림과 같이 선택된 Process의 Module list를 확인할 수 있다. 이는 알 수 없는 DLL의 injection을 감시할 수 있도록 해 준다. 일반적으로 View Menu의 Low Pane View에서는 DLLs을 보여 줄지 Handles를 보여줄 지를 선택할 수 있는 데, Handles의 경우는 Handle Leak에 대한 감시를 할 수 있기도 하다.
상위의 화면을 보면, PID 및 CPU column 에서 CPU 사용량이 실시간으로 바뀌는 것을 볼 수 있는 데, 특정 Process의 CPU 점유가 눈에 띄게 보이는 경우, 해당 Process를 선택하고 오른 쪽 마우스 클릭에서 Properties 를 확인할 수 있다.
속성을 보면, Threads TAB이 존재하고 CPU를 점유하고 있는 Thread Stack을 확인할 수 있다. 하지만, 그전에 Debugging Tools for Windows 라는 MS에서 제공하는 Tool을 Install 해야만 한다. 그리고, Process Explorer의 main menu의 Options에서 Configure Symbols에 적절한 Symbol을 넣어 주지 않으면, 상위 속성 창에서의 Stack button을 눌렀을 때 적절한 Thread Stack을 확인할 수는 없다. 일반적으로 Microsoft에서 제공하는 Public Symbol path를 입력하고, 그리고 추가로 해당 Process가 사용하는 Exe,DLL에 대한 Symbol 필요하다. 보통은 SRV*c:\symbols*http://msdl.microsoft.com/download/symbols; c:\MySymbols; 이렇게 입력한다. 예상하다시피 c:\MySymbols Folder는 모니터링 Process가 사용하는 EXE, DLLs에 대한 Symbol이 저장된 위치이다. 그와 같은 경우에 아래와 같은 Thread Stack에 대한 정보를 얻을 수 있다.