Process Explorer

Sorry about the lack of updates here recently. Currently we are in a rather difficult stage to write interesting articles. By now I’ve covered most of what I want to about the RTM version of the profiler and it’s too early to talk about many of the features that we are adding to the next version of the profiler. Hopefully in the coming weeks I’ll be able to cover some of the interesting new features that we are putting into the next version of the profiler.

So for now, I’ll continue to look at a few of the free tools that I find indispensible for my programming work. This week’s tool is sure to be one that most are already aware of but for those not yet familiar you are in for a real treat with

Process Explorer. This tool from Sysinternals (which recently became part of Microsoft) is essentially what the task manager wants to be when it grows up. It provides all sorts of performance metrics in addition to tracking what handles and DLLs are being used by currently running processes.

Process Explorer is such a powerful tool that I can’t even begin to make an enumeration of all the ways that it can be used, so I’ll content myself with just listing the ways that I end up using it most often. My main use for Process Explorer is in tracking down what DLLs and environmental variables are associated with a given process. For example, when profiling a managed application the profiler both needs specific environmental variables to be set up and to load specific profiling DLLs. So I open Process Explorer and select the target icon (to the right of the binoculars icon) and drag it over the managed process that I’m trying to profile. This automatically selects that process in Process Explorer without me having to look up its PID or window title. From there, I can right click on the process and go to the properties window. In that window, the environment tab will tell me whether or not the proper managed profiling environmental variables have been set. Now in regards to searching for if the correct profiling DLLs are loaded I tend to use a different approach. A quick hit of Ctrl+F will bring up the find DLL or handle window in Process Explorer. From there I just enter the name of the DLL that I’m looking for and Process Explorer will show me all the process that have loaded that DLL.

My other common usage for process explorer is to examine if a specific application is IO, Memory or CPU bound. From the process properties page that I mentioned above (the one with the environment tab) you can access a wealth of performance information from the Performance and Performance Graph tabs. The Performance Graphs tab gives you timelines of CPU Usage, Private Bytes and I/O Bytes. Before even firing up the profiler it is a good first step to take a look at these charts to see of you can pick up some of the basic performance characteristics of your application.