Tribute to Windows Application Verifier!
When people used to ask me what I do for living then my typical answer was: "I solve problems." Apparently after taking look at my short haircut and listening to my accent they were inclined to make lots of wrong conclusions ;-) After some experiences with this I changed my answer to: "I spend my time mainly on thinking", but this made it even worse. Currently I just tell that I’m a software engineer and this seems to be good enough.
Anyhow, lately I’ve been thinking about two main things: defect prevention and root cause analysis. One of the things I was looking at this weekend was the effectiveness of different development/test tools during the last 6 months of our product lifecycle. Fortunately for AppVerifier team I’ve reached a conclusion that based on cost vs. benefit analysis AppVerifier was a clean winner!
There have been some blog entries related to AppVerifier already and I’ll use this post to list first three I found:
Two main documents to read for getting started with AppVerifier:
If you’re doing driver development then use GFlags from Windows DDK. The quote from their page: “GFlags (gflags.exe), the Global Flag Editor, enables and disables advanced internal system diagnostic and troubleshooting features. It is most often used to turn on indicators that other tools track, count, and log.“
Based on our experience AppVerifier proved to be extremely useful for discovering and tracking down a number of bugs from different categories: problems with critical sections, general heap corruption related issues, invalid and leaking handles, everyone’s favorite NULL DACL issues etc. There were also some scary moments á la one of my direct reports successfully doing device driver debugging at kernel level and me looking at this and finally realizing that I was programmer once, but now I’m just a worthless PHB ;-) To summarize: AppVerifier just rules!
Word of the day: perlonked (source: Salva-Man). ‘Perlonked’- "As indicated or forced by the related, but unspecified, issue." Sample usage: "We're totally perlonked into this non-swooby solution."