ToolBoxNew Products for IT Professionals

Greg Steen

Find and Kill Memory Leaks and Rogue Tasks

Process Explorer

Tracking down memory leaks, CPU hogs, and processor locks in your applications or server builds can be a nightmare. Any admin will tell you that staying up through the night resetting servers or applications suffering from those kinds of bugs is not fun. But let’s face it, today’s market is highly competitive and businesses push their developers to stay on top of the market and get products out the door before the competition—sometimes at the cost of a proper QA cycle. Leaks and locks happen, and we IT professionals need to isolate them as fast as possible.

Mark Russinovich wrote a great tool to help us out. Process Explorer, which is available from Sysinternals, is an advanced process management application that gives you great insight into what is running, how those running processes affect other processes, and what kind of resources they are all taking up on the system.

You can think of Process Explorer as Task Manager on steroids. Aside from the fact that it partially relies on the Microsoft® Debugging Tools for Windows® (more specifically, dbghelp.dll), Process Explorer is extremely portable. In fact, it is a single 1.2MB exe file.

By default, the main interface shows you the processes running on the machine in a tree-view format. Each process is detailed with its icon, a process id, current CPU utilization, a description, and the associated company name. You can customize the view and add details, such as the user name associated with the process, the path to the process, version information, and current window status. Clicking on a process in the main view displays either the handles that the process has opened or details like DLLs, files, and threads depending upon which run mode you currently have the application in. Double-clicking a process opens up a more detailed property page that displays such valuable information as privileges and permissions, TCP/IP ports, connections, remote endpoints, private bytes history, and thread information. The interface is packed with features that make isolating problems easier.

The Performance tab on the details window shows you everything from kernel time and file handles, to GDI handles and and I/O statistics. You can even see what printable strings are found in the scan of the process image or in memory. If you think a hacker has attached himself to one of your processes, this can provide insight into the attack. If you do find a rogue process or a stuck process that is eating all your cycles, you can kill the process or its entire process tree with a single click.

Another one of Process Explorer’s handy features is its ability to search for processes by a particular handle or DLL it has loaded. I also like how easily you can search the Internet for information about a process name by right-clicking on it. It’s a simple feature, but I find myself using it all the time to find out more information about where stray processes are originating from.

With all the keyloggers and spyware out there today, it’s critical to know what every process on your machines is doing. The faster you isolate the problem, the faster you can get it fixed, and the more restful your nights will be. As a hands-on IT professional working on a Microsoft platform, I find this an indispensable tool. And best of all, Mark and Sysinternals provide it for free. I, for one, am saying thank you!

Price: Free

Streamline Your Support System

SmarterTicket Professional Edition

Choosing the right customer support solution for your organization or Web site is an important decision. SmarterTicket 2.6 Professional Edition from SmarterTools is a full-featured, cost-effective, ticket-based solution for handling your support needs.

As any support professional will tell you, over time patterns in client questions and support paths become apparent. So SmarterTicket lets you create and categorize predefined responses that your support team can easily refer to. In addition, you can streamline your support team by creating support departments. You can even assign predefined responses to particular agents who may field a certain set of support questions.

The application supports multiple languages and your customers can use the language of their choice to submit and navigate tickets. Ticket e-mails can be sent in either HTML or plain text depending on what works best for your organization. Ticket actions include transfer to a different agent or group, marking a ticket as active, waiting for response, closing a ticket, and merging one ticket with another ticket. You can keyword search tickets, filtering by department, ticket ID, e-mail address, and subject.

Another nice feature is the Knowledgebase, which allows you to categorize and enter answers to frequently asked support questions. This can reduce your response time, as well as the number of requests that your support staff has to answer. Knowledgebase categories and answers can also be marked as private, making them accessible only to agents. This allows you to create both an internal and external support hierarchy in your Knowledgebase.

SmarterTicket also provides a great set of reports—ranging from response times to audit-reports—that can help you determine how your support staff is performing.

SmarterTicket is a .NET-based Web app. Installation is easy thanks to the built-in setup forms. As for your database back end, SmarterTicket supports Microsoft SQL Server™ 2000, MSDE, and MySQL. Meanwhile, agents can be associated with Active Directory®/Domain accounts (based on the username), which should ease password and access management to the app.

The application’s interface is polished and professional. And if you plan to deploy SmarterTicket as a support solution for your Web site, you will be happy to know that the application is completely skinnable, allowing you to keep its look consistent with your current Web site.

Price: Starts at $199 for 5 agents.

Book Review

The Build Master

Successful infrastructures (and companies) rely on the cooperation of all the moving parts; the whole truly being a sum of the parts. Vincent Maraia’s book, The Build Master: Microsoft’s Software Configuration Management Best Practices (Addison-Wesley Microsoft Technology, 2005), is a step in making yourself and your staff aware of what is involved in configuration management—especially the complexities of the software build process. The book is targeted towards build managers, project managers, and development coordinators, but I think it is a valuable resource for the whole range of people involved in the full software lifecycle, from development and QA to Internet operations and client support staff.

All technologists should try to stay up-to-date and aware of the methodologies of the departments around them. Isolating yourself from the development and QA processes only leads to finger pointing and the infamous blame-game. Heck, simply understanding the terms used in build management and what makes up a software version number can benefit the IT professional.

Maraia is a 15-year veteran of Microsoft and provides hands-on applied knowledge and experience to the reader, giving relatively in-depth views into the software configuration management best practices recommended by Microsoft. Along with the walk-through of the different elements of build and configuration management, the book also offers some great tidbits of history of software development at Microsoft; for example, the NT in Windows NT® stood for the code name of the i860 Intel chipset it was designed to run on, N10.

The book states that "the topics in this book apply to development shops of all sizes, from small groups of 40 to 100 developers to groups as large as the 2,000+ developers in Windows." In my opinion, that lower end could be extended to shops of as little as two developers. It starts out its discussion by defining a build and then explaining how to effectively set up your source tree configuration for your environment. It also provides a nice introduction to Virtual Build Labs.

In the chapter "Versioning," he explains the importance and the structure of version numbers and when to apply them. The chapter "International Builds" describes the different elements involved in localizing your software product. Here another interesting Microsoft tidbit pops up: somebody at Microsoft actually created a Klingon localization of Windows NT 3.1.

Another good chapter, "Managing Hotfixes and Service Packs" gives excellent insight into how to branch and then merge your builds effectively when fixing bugs in released code. Finally, the book looks at new and future build tools from Microsoft, including the Visual Studio Team System architecture and how Visual Studio Team Build can automate parts of the build process.

Price: $39.99

Manage Your Build and Deploy Process


NAnt (which stands for Not Ant) is an open-source build tool written in .NET. Those of you familiar with the Ant build tool will realize that the similarities aren’t limited to the name. However, NAnt does have some significant differences. As the documentation states, "NAnt is only compatible with Ant in spirit."

NAnt’s build files are XML-based and each build file contains one project and one to many build targets. Within each of those build targets, you specify individual build tasks for your applications. NAnt is a great way to manage and automate your build process. This is obviously handy for developers and configuration managers. However, Internet operations staff will also find this application an incredibly useful way to package and deploy your builds across servers and environments.

Those of you using CVS for source control will be pleased to know that NAnt supports checkout, tagging, authentication, and updates. You can create tasks for signing delay-signed .NET assemblies or re-signing existing assemblies. There are also built-in tasks for zipping and unzipping file sets—a great feature for putting your build into a distributable package for deployments. You’ll also find support for Internet resources and retrieving them via an HTTP proxy.

NAnt is definitely not limited to compiling .NET-based applications. Though the app requires .NET to function, you can compile unmanaged C/C++ programs, as well. It integrates with the NDoc code documentation generator, so you can specify as a build task an NDoc task that will generate class library documentation from .NET assemblies and the C# compiler’s XML documentation.

You can monitor the build process via NAnt’s listener and logger features. Listeners are alerted to different events throughout the build process, such as starting and stopping tasks and when a message has been logged. Loggers allow you to log information to the standard output, error print streams, or a specified log file. There are three levels of logging: quiet, verbose, and debug.

NAnt is available on SourceForge in either binary or source format. The current version is labeled as sub-1.0, but it seems stable enough for production use. All-in-all, NAnt is a nice, easy-to-understand tool for building or deploying applications.

Price: Free

Analyze Internet Routes and Locate Problems

VisualRoute 2006 Business Edition

Isolating connection problems can be a bear, but Visualware offers VisualRoute 2005 Business Edition to help make the job easier. The software takes route tracing to a new level. In addition to showing you the response times for the different hops taken along the way—like a standard trace route provides—VisualRoute also displays geographically (on a map of the globe) where your hops are occurring.

If that glitz and glam isn’t enough to win you over, the application offers more substance: it shows you relative GMT time zones, IP addresses, node names, locations, network identifiers, and a graph of response times. Clicking on a node name will give you the registrant information, while clicking on the network name will give you all the Whois details for that network. Speculated locations are highlighted as such, and clicking on a definitive location will give you the latitude and longitude if you want it.

VisualRoute can also trace app protocols by specifying the port and the address of the destination. This is a nice way to determine if a remote mail, Web, or ftp server might be down and affecting your system users. The app also provides an analysis of the trace, offering more details about the problem.

The software is Java-based and does require a Java Virtual Machine to be installed on your system.

Price: Starts at $189 for an individual license. $264 for license plus upgrades.

Write to Toolbox

If you have a favorite tool or utility you would like to see featured here, please write to the author at

Greg Steen is a technology professional, entrepreneur, and enthusiast. He is always on the hunt for new tools and methods to help make operations and development easier for IT professionals.

© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; reproduction in part or in whole without permission is prohibited.