Friday, April 29, 2005

Hansleman's List: PIDs & Troubleshooting With Them

More from Scott Hansleman's list of what great developers should know: "What is a PID? How is it useful when troubleshooting a system?" A PID is a Proportional-Integral-Derivative, a device used to monitor and control temperature in a very precise fashion. PIDs are often added on to home espresso systems by techie espresso fanatics to get the utmost in water temperature stability during a shot. (Google "PID Sylvia" for hits) However, I think Hansleman most likely means in the .NET context, where PID would be a Process Identifier, a numeric label for each process running in a system. I'm short in practical experience debugging/troubleshooting in this environment, being in the position of just moving over to .NET development from other domains; however, Google searches brought up a wealth of interesting search hits on using various tools to search out memory leaks and performance issues. 'Akhune's Weblog' has as its single post a handy guide for using several differnet tools to delve into CLR performance issues. See also Rico Mariani's blog post here for similar details with a step-by-step walkthrough. Useful tools:
  • tasklist.exe prints a list of all processes currently running.
  • vadump.exe, available here can be used to look at the virtual address space of a process.
  • windbg, available here, lets you get down and deep into a process. Looks to be frightenly like ddd and gdb I'm somewhat familiar with from my *nix development stints.
  • The CLR Profiler, available here, will let you look at a passle of garbage collection issues, heap states, call trees, histograms for various allocations, and a bunch of other stuff.
  • The Runtime Debugger (Cordbg.exe), works for managed code, plus its source code ships with VS.NET under the SDK Tools Developers Guide folder.
Important note: Most of these tools will require that you've compiled with debug flags. UPDATE: A good friend passed on a recommendation for Process Explorer, another great tool from Sysinternals. I'd seen references to Process Explorer, but hadn't checked it out. I've used RegMon and FileMon from Sysinternals with great sucess, so I'd guess Process Explorer should be just as useful.

No comments:

Subscribe (RSS)

The Leadership Journey